为什么在此声明中有编译器警告?

时间:2013-11-17 02:27:18

标签: ios iphone objective-c

在标准iPhone应用程序中,我在桌面视图顶部显示图像选择器。代码工作正常(我相信;-)),但是当将图像选择器委托设置为表视图控制器(ChoiceController)时,我收到编译器警告。
enter image description here ChoiceController被定义为实现委托:

@interface ChoiceController : UITableViewController <UIActionSheetDelegate, UIImagePickerControllerDelegate, MFMailComposeViewControllerDelegate> 并且显然确实成为了代表,因为它接受了所有适当的行动。

我已经尝试将ChoiceController(即self)转换为UIImagePickerControllerDelegate,但我得到的结果相同。

欢迎见解!

1 个答案:

答案 0 :(得分:2)

您可以在警告文本中看到代理人必须是UIImagePickerControllerDelegate,还有UINavigationControllerDelegate

它定义如下: @property (nonatomic, assign) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate

在您的情况下,它工作正常,因为所有UINavigationControllerDelegate方法都是可选的。如果不是这样的话,该应用程序会因unknown selector send to instance异常而崩溃。

您应该实施UINavigationControllerDelegate协议。如果您不需要在那里声明的任何方法,并且它们确实是可选的,请不要实现它们。