協(xié)議 Protocol
.h文件:只提供外部接口销部,不提供具體實(shí)現(xiàn)
@protocol Drawable @end
包含屬性缴饭、實(shí)例方法硫椰、類方法(繁调、初始化器萨蚕、析構(gòu)器)
不包含實(shí)例變量(定義屬性時(shí)只會(huì)自動(dòng)生成getter和setter訪問器,不會(huì)再自動(dòng)生成實(shí)例變量)
使用協(xié)議
#import “.h”
@interfaceBLNPoint :NSObject<Drawable>
遵守協(xié)議需要實(shí)現(xiàn)所有@required的成員(.h文件里實(shí)行需要重復(fù)聲明(生成實(shí)例變量)蹄胰,方法聲明不用重寫岳遥,.m文件里直接寫實(shí)現(xiàn)方法)
注意警告信息
1. @required沒有全實(shí)現(xiàn)會(huì)有警告信息
協(xié)議可以作為聲明類型void func( id<Drawable> obj),但不能創(chuàng)建實(shí)例變量
2. 協(xié)議變量被賦值非協(xié)議類型變量也會(huì)有警告信息
檢查協(xié)議
conformsToProtocol
協(xié)議繼承
一個(gè)協(xié)議可以繼承一個(gè)或多個(gè)協(xié)議裕寨,子協(xié)議中需要實(shí)現(xiàn)父協(xié)議中的方法
協(xié)議組合
< , >
一個(gè)類遵守多個(gè)協(xié)議
可選協(xié)議
@optional以下的全部是可選協(xié)議(直到@required)
不必須實(shí)現(xiàn)
常用協(xié)議
NSObject:區(qū)分基類和協(xié)議(NSObject和 <NSObject>)
NSCopying浩蓉,NSMutableCopying:拷貝
NSFastEnumeration:使用for-in
NSCoding