GeekBand OC 11. 类型合同:协议

协议 Protocol

.h文件:只提供外部接口,不提供具体实现

@protocol Drawable @end

包含属性、实例方法、类方法(、初始化器、析构器)

不包含实例变量(定义属性时只会自动生成getter和setter访问器,不会再自动生成实例变量)

使用协议

#import “.h”

@interfaceBLNPoint :NSObject<Drawable>

遵守协议需要实现所有@required的成员(.h文件里实行需要重复声明(生成实例变量),方法声明不用重写,.m文件里直接写实现方法)

注意警告信息

1. @required没有全实现会有警告信息

协议可以作为声明类型void func( id<Drawable> obj),但不能创建实例变量

2. 协议变量被赋值非协议类型变量也会有警告信息

检查协议

conformsToProtocol

协议继承

一个协议可以继承一个或多个协议,子协议中需要实现父协议中的方法

协议组合

< , >

一个类遵守多个协议

可选协议

@optional以下的全部是可选协议(直到@required)

不必须实现

常用协议

NSObject:区分基类和协议(NSObject和 <NSObject>)

NSCopying,NSMutableCopying:拷贝

NSFastEnumeration:使用for-in

NSCoding

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,422评论 19 139
  • 苹果官方文档翻译 《Objective-C语言编程》(Programming with Objective-C) ...
    fever105阅读 26,074评论 19 129
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,348评论 30 472
  • 1. 使用 #import 相对c的 include 是防止头文件的重复导入 2. NSLog 相对于 print...
    迎风起飞的猪阅读 5,809评论 6 9
  • 一切应该怎样去体现 应该就是一张笑脸 和那双弯弯的眼 在这里 仰头蓝蓝的天 低头河水浅浅 偶尔雨天 空气也会更加新...
    JanOnly阅读 988评论 0 0