我试图实现一个协议。如何将值传递给@protocol
我已经看过文档here,我理解这些概念,但我认为我错过了一些东西。
我想让一个用户点击表格视图中的文件名触发'didSelectRowAtIndexPath',它将依次通知委托,用户选择了一个文件(触发委托中的didSelectFileName)并传递文件名。我宣布协议如下:
@protocol FileList <NSObject>
- (void)didSelectFileName:(NSString *)fileName;
@end
我的问题是:
- 我如何设置文件名“”值,这样,当“didSelectFileName”被称为它有它的当前值
- 我如何告诉我的代码在代理中触发'didSelectFileName'。
当你简单地将代表强制转换为'id'时,你不需要较慢的' - [respondsToSelector:]'因为你已经知道它响应那个选择器,因为在给定的协议中它没有被定义为' @ optional'。如果你说委托符合协议,但没有实现所有协议所需的方法,这是一个编程错误(并且编译器会给出警告)。 –
2011-07-20 12:59:31
@WTP我同意你的看法,但有时如果我们没有实现协议方法,编译器只会在错误的时候给出警告,如果我们忘记实现应用程序将会崩溃,但如果我们检查使用响应选择器应用程序不会崩溃。这就是我写这一行的原因。感谢您的信息 –
@WTP您可以在示例中解释这件事 - (void)doSomethingWithThisObject:(id)aObject ...(id )的用法如果我们使用它,我认为我们不需要在符合此协议的另一个类的接口中添加名称。我对吗?请澄清像MyCLass:UIView 这里我们不需要添加这个,如果我们传递它的方法? –