2014-04-02 22 views
0

我有一个简单的问题要问。为什么代理工作也没有在接口文件中定义它?

我有一个ViewController使用UITableView来显示事物列表。该UITableView的代表们在此视图控制器(使用数据源=自我,等等。)

在我知道我需要使用来定义界面委托类的所有教程:

@interface Class : SuperClass <ClassNameDelegate> 

但是,所有的代码没有声明这一点并且只实现方法,它也能很好地工作。例如:

@interface Class: SuperClass 

是一个错误?无论如何我需要声明它?

谢谢。

莫罗

+0

你能解释一下多一点?你究竟想要实现什么? – Nilesh

+0

具体说明类和超类的名称。你有没有得到任何警告(你应该)。 – Wain

+0

“ClassNameDelegate”实际上是一个协议。也就是说,你的类应该实现的方法符合协议。通常,这与代表一起使用,以便为班级提供其他功能。如果您在头文件中声明了没有协议的方法,那么它会在大多数时间工作,因为许多实现正在检查您的类是否响应某些选择器。 –

回答

0

在通常情况下,我们使用performSelector调用委托方法是这样的:

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

,一切工作,因为这代表有没有这种方法。

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

0

有三个时刻:

  1. 此致第二类将返回NO呼叫conformsToProtocol:@protocol(ClassNameDelegate)
  2. 如果ClassNameDelegate都需要的方法,如果它没有实现报应方法,你不会得到编译第二类错误。
  3. 你将得到一个警告,如果尝试分配第二类对象id<ClassNameDelegate>
+0

谢谢。这都是正确的。 –

相关问题