gpt4 book ai didi

cocoa - 如果所有方法都是可选的,那么协议(protocol)的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 16:19:17 25 4
gpt4 key购买 nike

我理解协议(protocol)的用途(使类型符合一组方法或/和属性),但我不明白具有所有可选方法的协议(protocol)的目的是什么。一个例子是 UITextFieldDelegate

如果协议(protocol)中的所有方法都是可选的,那么为什么要遵守协议(protocol)而不是在类中从头开始编写方法呢?在这种情况下,我不明白遵守协议(protocol)有什么好处或目的。

可选方法是否只是作为可以实现的功能的建议?

最佳答案

从历史上看,对于 Cocoa 中的代表和数据源,使用的是非正式协议(protocol)。非正式协议(protocol)是通过 NSObject 类的类别实现的:

@interface NSObject (NSTableViewDelegate)

- (int)numberOfRowsInTableView:(NSTableView *)tableView;

// ...

@end

后来又引入了协议(protocol)中的可选方法。此更改可以更好地记录类职责。如果您在代码中看到该类符合 NSTableViewDelegate,您怀疑某处存在由此类实例管理的 TableView 。

此外,此更改会导致编译时进行更严格的检查。如果程序员不小心将错误的对象分配给 delegatedataSource 属性,编译器会发出警告。

但是你的假设也是正确的。可选方法也是对可能功能的建议。

关于cocoa - 如果所有方法都是可选的,那么协议(protocol)的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711714/

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