iOS 中的 Protocol
Protocol 基本概念
类似于 java 的接口 interface,接口就是一堆方法的声明,没有实现,在 OC 中接口是由一个叫做协议的 Protocol 来实现
Protocol 语法格式
Protocol 的定义
类遵守协议
一个类可以遵循 1 个或多个协议
任何类只要遵循了 Protocol 就相当于拥有了 Protocol 的所有的方法声明
Protocol 和继承区别
继承之后默认就有实现,而 Protocol 只要声明没有实现
相同类型的类可以使用继承,但是不同类型的类只能使用 Protocol
Protocol 可以用于存储方法声明,可以将多个类中共有的方法抽取出来,以后让这些类遵守协议即可
Protocol 和 category 区别
Category 给一个类可以扩充方法,既有申明也有实现,而 Protocol 只有声明,没有实现
Category 和 Protocol 都可以声明方法,不能声明属性
Protocol 注意事项
Protocol 可以用 @property 形式声明属性,只不过在 Protocol 中声明的属性,只有对应的 setter/getter 方法声明,并没有生成对应的成员变量
Protocol:
实现类:
上面方法中主要用到了 @synthesize sportType=_sportType , 意思是说,sportType 属性为 _sportType 成员变量合成访问器方法。
父类遵守了某个类的 Protocol,那么子类也会自动遵守这个 Protocol
一个类可以遵守多个 Protocol
Protocol 又可以遵守其他 Protocol,只要一个 Protocol 遵循了其他 Protocol,那么这个 Protocol 就会自动包含其他 Protocol 的声明
基协议
NSObject 是一个基类,任何其他类都要继承它
还有个名字也叫 NSObject 的 Protocol,它是一个基协议
NSObject 协议中声明最基本的方法(description、retain、release 等等)
每个新协议都遵循 NSObject
Protocol 关键字
@required:这个方法必须实现,默认就是 required(若不实现,编译会报错)
@optional:这个方法不一定要实现
简单应用
要求:一个人需要一个 app,这个 app 必须有学习、买东西、分享等功能处理思路:1、需要创建一个人和 APP2、需要创建一个 Protocol 来描述这些功能 3、人拥有的 APP 要实现这些功能 4、APP 需要遵循这个 Protocol 且实现它
版权声明: 本文为 InfoQ 作者【NewBoy】的原创文章。
原文链接:【http://xie.infoq.cn/article/f35a0bd6867a05d92edf68abc】。文章转载请联系作者。
评论