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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容