Cocoa编程中的协议、可选方法及基础类使用
1. 协议注入方法的限制
在Cocoa编程中,你可能会尝试通过扩展协议并在协议扩展中实现委托方法,将方法注入到采用Cocoa委托协议的类中。但这种方法行不通,因为Objective - C无法识别Swift协议扩展。你可以在Swift中调用此类方法,但Cocoa永远不会调用它,因为它不知道该方法实现的存在。
例如,当 UIApplication 类文档告诉你委托属性的类型为 UIApplicationDelegate 时,这意味着如果你想知道 UIApplication 的委托可能会收到哪些消息,你需要查看 UIApplicationDelegate 协议文档。像 application(_:didFinishLaunchingWithOptions:) 这样的方法在 UIApplication 类文档页面中并未提及,而是在 UIApplicationDelegate 协议文档页面中。
2. 非正式协议
在网上或Cocoa文档中,你可能偶尔会看到对非正式协议的引用。非正式协议实际上并不是真正的协议,它只是Objective - C的一种技巧,用于让编译器了解方法名称,从而允许发送消息而不报错。
实现非正式协议有两种互补的方式:
- 定义 NSObject 的类别:这使得任何对象都有资格接收该类别中列出的消息。
- 定义一个没有类正式遵循
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



