为什么委托工作也没有在接口文件中定义它?

时间:2014-04-02 09:38:44

标签: ios iphone objective-c interface delegates

我有一个简单的问题要问。

我有一个ViewController,它使用UITableView来显示事物列表。 UITableView委托是这个ViewController(使用dataSource = self等)。

在所有教程中,我知道我需要使用以下方法在接口中定义委托类:

@interface Class : SuperClass <ClassNameDelegate>

但是所有代码都可以正常工作,而无需声明并仅实现方法。例如:

@interface Class: SuperClass

是个bug吗?我还是需要申报呢?

谢谢。

莫罗

2 个答案:

答案 0 :(得分:0)

在一般情况下,我们使用performSelector来调用这样的委托方法:

[(NSObject *)_delegate performSelector:@selector(storeFeedbackViewControllerWasDismissed)];

并且一切正常,因为这个委托有这个方法。

但最好指出该类符合协议,因为XCode可以警告您实现您可能错过的所需委托方法。

答案 1 :(得分:0)

有三个时刻:

  1. 您的第二堂课将在致电conformsToProtocol:@protocol(ClassNameDelegate)
  2. 时返回NO
  3. 如果ClassNameDelegate有必需的方法,如果没有实现请求方法,则不会出现编译第二类错误。
  4. 如果尝试将第二类对象分配给id<ClassNameDelegate>
  5. ,您将收到警告