2011-12-05 29 views
0

對不起,我沒能制定標題簡短的問題..繼承後的代表?

如果我繼承一個類的委託協議和財產安全,做我的代表還需要實現委託協議的超類,還是我必須爲子類定義一個新的?

在我來說,我的子類UIImagePickerController

[(UIImagePickerController *)self.myUIImagePickerControllerSubclassInstance setDelegate:self]; 

當我嘗試它的委託設置爲self,從一些視圖控制器我收到以下警告:

警告:語義問題:發送'ViewController *'參數爲 不兼容類型 'id'

回答

1

你的委託需要遵守UIImagePickerController屬性聲明:

@property (nonatomic, assign) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate

所以,儘量增加<UIImagePickerControllerDelegate>到您的子接口:

@interface YourPicker : UIImagePickerController <UIImagePickerControllerDelegate> 
... 
@end 

,也許你需要UINavigationControllerDelegate和實施強制性方法,如果有的話。

+0

謝謝!我發現,只是添加UINavigationControllerDelegate到我的viewController做到了:'@interface ViewController:UIViewController ' – bijan

0

是的,您的委託也必須與超類兼容。例如:

該協議擴展了網絡視圖委託,因此兩者相互兼容。

+0

謝謝你!所以這些是我的子類添加到超類中現有的其他委託方法,對吧? – bijan

+0

@bijan是正確的,它們會添加到超類定義的內容中。 –