2
這可能嗎?例如,我有一個帶有init方法的TriangleDataView類。目前,該方法聲明如下:要求傳入客觀C方法的對象符合協議?
- (id)initWithFrame:(CGRect)frame delegate: (id) delegateObject;
我想要求delegateObject符合UITextFieldDelegate協議。但是那是什麼語法?
這可能嗎?例如,我有一個帶有init方法的TriangleDataView類。目前,該方法聲明如下:要求傳入客觀C方法的對象符合協議?
- (id)initWithFrame:(CGRect)frame delegate: (id) delegateObject;
我想要求delegateObject符合UITextFieldDelegate協議。但是那是什麼語法?
- (id)initWithFrame:(CGRect)frame delegate:(id<UITextFieldDelegate>)delegateObject;
+1:但是,我相信這只是一個警告。如果他真的想檢查他可以添加'if(![delegateObject conformsToProtocol:@protocol(UITextFieldDelegate)])'並引發異常。也許你可以添加一個更完整的答案? – sdolan 2010-07-18 02:18:56
@sdolan,更好的答案是 - 錯誤(將警告視爲錯誤)。 ObjC在很大程度上依賴於正確編碼的警告,你永遠不應該忽視它們。 – 2010-07-18 03:34:40
@Rob Napier:謝謝,我不知道那面旗幟(儘管我在實踐中做了同樣的事情)。我建議的唯一好處是,如果您將代碼分發給沒有該標誌的其他開發人員,請勿修復警告,並且無法調試由於在幾秒鐘內未實現協議而導致的「doesNotRespondToSelector」異常。 – sdolan 2010-07-18 04:25:12