关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp

1.category,覆盖原类的方法,即使不引用该category头文件,也能覆盖,respondsToSelector:方法也能响应。
2.category,不可以有私有变量,但是可以有@property的声明,property的声明只是声明了该类的set,get方法(需要引用该category的头文件),但是category实现的m文件里面根本就没有生成这两个方法,所以你使用self.xxx时,会挂掉,错误提示:没有get/set方法。
你在category的m文件里面@synthesize 也无法声明,
也就是说,有声明,无实现。
3.category的静态方法,可以使用,
即使不声明,而是直接去实现,
调用的时候(无需引用category的h文件)虽然会有警告,但依然会执行。
调用的时候,只能用类名,用对象的话,会挂掉。


关于协议@Protocol
协议不能实例化,所以不能有实例变量(或者叫私有变量),但是可以有@property声明,这个声明,只是告诉别人这个协议里面有set,get方法而已。
注意:尽量不要在@Protocol用@property声明,很容易出毛病,特别是输出属性时。
如果要使用@property的话,可以参考 UITextInputTraits,这个官方协议里面都是@property

协议时可以有静态函数的。这个和java里面的接口有点冲突,接口时不可以有静态函数的。
协议里面不能定义static常量,定义时没错,一旦引用该文件,但编译报错


非正式协议就时一个分类,category,用于根类的category。
例如@interface NSObject (类别名称)
但是在object-2.0中,已经用@optional代替了非正式协议。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值