oc中的 分类 和 代理

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 
        @required//必须实现
        -(void)teachiOS:(NSString *)project;
        @optional//可选实现的方法
        -(void)helpStudent;
        //带返回值的协议方法
        -(CGFloat)reportQingkuang:(NSString *)qingkuang;
        @end
        
    
  • 代理指针

        //委托方要付出的代理,声明代理属性
        @property (nonatomic, weak) id delegate;
        
    
  • 建立代理关系即可

你可能感兴趣的:(oc中的 分类 和 代理)