kim*_*3er 10 protocols objective-c optional
我目前正在学习Objective-C,并在Protocols中遇到了可选方法.我的背景是C#,可以看到一个类似于C#接口的协议.
在C#接口代表合同的地方,通过宣传一个接口,你说你将实现定义的方法.
考虑到这一点,我很困惑为什么你需要定义一个可选方法.这不是诽谤或试图减少Objective-C,我喜欢Objective-C.我只是想了解这些可选方法的好处,以便更好地理解语言.
如果有人可以提供一些可选方法有用的真实场景(带有示例代码),我真的很感激.
Fra*_*irs 14
我给你举个例子.我有许多与Flickr API对话的ObjC类.其中一个被称为FKAccount可以做很多与Flickr用户帐户相关的事情,包括下载用户的照片,获取他们的联系人列表等等.
的FKAccount类定义了一个代表协议FKAccountDelegate.此协议指定了许多FKAccount将在其委托上调用的回调方法,具体取决于对Flickr的各种网络操作的成功或失败.并非每个使用的应用程序FKAccount都会对FKAccount可执行的每个Flickr操作感兴趣.
如果它要求每个类自称落实FKAccountDelegate协议实现每一个方法,你最终会得到很多存根方法(FWIW,有定义41种方法FKAccountDelegate).当@optional在协议中声明这些方法时,委托只需要实现它有兴趣接收的回调.
的FKAccount类将检查其代表响应@optional于所述协议通过以下方法:
if([self.delegate respondsToSelector: @selector(accountDidDownloadContacts:)]) {
[self.delegate accountDidDownloadContacts: self];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6482 次 |
| 最近记录: |