oc 中的分类 Category
- 类别的声明格式 @interface 类名 (类别的名字)
- @interface Person (FootBall)
- 注意:在类别中添加属性,系统是不会实现setter和getter、也不会生成对应的成员变量
-
在setter方法中采用runtime给某个对象添加一个成员变量
-(void)setSubject:(NSString *)subject{ //使用runtime为setter方法赋值 objc_setAssociatedObject(self, "subject", subject, OBJC_ASSOCIATION_COPY_NONATOMIC); } -(NSString *)subject{ //getter 方法中要在运行时去返回运行时创建的临时成员变量 return objc_getAssociatedObject(self, "subject"); }
-
oc中的代理 delegate
-
声明协议
@protocol BossDelegate <NSObject> @required//必须实现 -(void)teachiOS:(NSString *)project; @optional//可选实现的方法 -(void)helpStudent; //带返回值的协议方法 -(CGFloat)reportQingkuang:(NSString *)qingkuang; @end
-
代理指针
//委托方要付出的代理,声明代理属性 @property (nonatomic, weak) id <BossDelegate>delegate;
建立代理关系即可