1
#import <UIKit/UIKit.h>
@protocol myProtocol <NSObject>
-(void)aMethod;
@end
@interface ViewController : UIViewController
@property (weak) id<myProtocol> dSource;
@end
我想要牢牢抓住Obj-c協議,我正在讀蘋果doc去學習,很少有東西不清楚。以下是在點從DOC:需要協助理解objective-c協議
餅圖視圖類接口將需要一個屬性來跟蹤數據源對象的。 (上面的代碼中,我們主要是申報協議這種方式,當我有協議,在我的類中聲明爲什麼需要追蹤被攝體,或協議可以在獨立的類中定義?爲此,我們需要跟蹤對象?)
通過在屬性上指定所需的協議一致性,如果您嘗試將屬性設置爲不符合協議的對象,則會收到編譯器警告。
如果您嘗試調用上面定義的符合協議的id的respondsToSelector:方法,則會出現編譯器錯誤,表明沒有已知的實例方法。一旦你使用協議限定了一個id,所有的靜態類型檢查都會回來;如果您嘗試調用未在指定協議中定義的任何方法,則會出現錯誤。避免編譯器錯誤的一種方法是將自定義協議設置爲採用NSObject協議。
感謝您的回覆,在第1點我要求的主要是協議的編寫方式就像在代碼片段,所以當協議在我的課爲什麼要聲明一個跟蹤對象? –
它可以讓你在課堂之外移動這個功能。例如。 UITableViewDatasource在UITableView頭文件中聲明,但在那裏聲明,所以你不必爲了自定義它的功能而繼承UITableView。 – wattson12
意思是我可以將協議聲明爲一個獨立的頭文件並使用跟蹤對象。 –