我想知道是否有人可以解释一下 Objective C 中的非正式协议是什么?我尝试在苹果文档和其他一些书籍上理解它,但我的头仍然在旋转,所以如果有人可以用例子解释,我将非常感激。
Thanks.
An 非正式协议正如乔纳森所说,通常是在 NSObject 上声明的一个类别,没有相应的实现(最常见的是,很少有一个类别确实在 NSObject 上提供了虚拟实现)。
从 10.6 开始(以及在 iPhone SDK 中),不再使用此模式。具体来说,10.5(及之前的版本)中声明的内容如下:
@interface NSObject(NSApplicationNotifications)
- (void)applicationWillFinishLaunching:(NSNotification *)notification;
...
@interface NSObject(NSApplicationDelegate)
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
...
现声明为:
@protocol NSApplicationDelegate <NSObject>
@optional
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
...
- (void)applicationWillFinishLaunching:(NSNotification *)notification;
...
也就是说,非正式协议现在被声明为@protocol
与一堆@optional
方法。
无论如何,非正式协议是方法声明的集合,您可以选择实现这些方法来更改行为。通常(但并非总是),方法实现是在委托上下文中提供的(例如,表视图的数据源必须实现一些必需的方法,并且可以选择实现一些附加方法)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)