gpt4 book ai didi

objective-c - Objective-C 中的非正式协议(protocol)?

转载 作者:IT老高 更新时间:2023-10-28 11:34:14 25 4
gpt4 key购买 nike

我想知道是否有人可以解释什么是 Objective C 中的非正式协议(protocol)?我尝试在苹果文档和其他一些书籍上理解它,但我的头脑仍然在旋转,所以如果有人可以举例说明,我将非常感激。

谢谢。

最佳答案

非正式协议(protocol),正如 Jonnathan 所说,通常是在 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 方法的 @protocol

在任何情况下,非正式协议(protocol)都是方法声明的集合,您可以选择实现这些方法来改变行为。通常,但不总是,方法实现是在委托(delegate)的上下文中提供的(例如,表格 View 的数据源必须实现少数必需的方法,并且可以选择实现一些额外的方法)。

关于objective-c - Objective-C 中的非正式协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2010058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com