OC协议分正式协议和非正式协议。很多人自己没理解透就发表博文,看了几个贴越来越糊涂,害死人呢~
总结一下:
个人简单理解:正式协议主要用于实现代理(其它用法很少用到请参考 http://www.dapps.net/dev/iphone/ios-dev-protocol-and-delegate-example.html),非正式协议就是NSObject的一个类别。
总结一下:
个人简单理解:正式协议主要用于实现代理(其它用法很少用到请参考 http://www.dapps.net/dev/iphone/ios-dev-protocol-and-delegate-example.html),非正式协议就是NSObject的一个类别。
因为,NSObject是顶级父类,在NSObject中添加了该方法,也就是说通过继承关系,所有的类中都有该方法。
正式协议是通过protocol指定的一系列方法的声明,然后由实现该协议的类自己去实现这些方法。而非正式协议是通过向NSObject中添加一个类别来实现,然后子类去继承NSObject。其实都差不多。
不过,非正式协议已经渐渐被正式协议取代,正式协议最大的优点就是可以使用泛型约束,而非正式协议则不可以。