0

I know I can define a delgate in my .h file as follows:

@property (nonatomic, weak) id <MyClassDelegate> delegate;

and I found this declaration works too:

@property (nonatomic, weak) id delegate;

I use xcode 4.6 and the lastest sdk. My question is: would the compiler automatically look for the "MyClassDelegate" in .h file?

4

2 回答 2

1

您可以通过任何一种方式定义您的委托实例变量,但第一种方式更好。

第一种方式,编译器会去寻找协议(你需要导入它定义的任何 .h 文件),然后它会检查:

  1. 在任何设置委托的地方,被设置的实例实现协议
  2. 在您使用委托的任何地方,您都在调用它的已知方法

第二种方式,编译器不进行检查,将所有内容留给运行时。

该协议不需要在具有特定名称的文件中定义,它只需要在您尝试使用它的文件中定义,或者需要在其中定义它的文件中定义#import

于 2013-05-06T15:59:47.537 回答
1

您可以使用协议进行正式委派(您的第一个版本),也可以在没有协议的情况下进行非正式委派(您的第二个版本)。两者在语法上都是正确的。

于 2013-05-06T16:01:30.703 回答