为什么在 属性 声明中使用 <Optional>?
Why use the <Optional> within a property declaration?
我在研究的一些代码中遇到了以下行:
@property (nonatomic, strong) NSString <Optional> *name;
我不明白声明 可选 属性。
我确实理解对方法使用“@optional”指令。
顺便说一句:代码来自库模块而不是完整的应用程序。
这看起来像是将 属性 声明为符合名为 "Optional" 的协议的 NSString。
这与方法的 @optional 或 Swift 中的可选类型不同——它只是给协议的名称。编写它的人可能想重命名该协议,以免与该词的 w/the 其他用法发生冲突。
所以它不仅仅是一个典型的 NSString,而且还有额外的明确限制,它实现了 "Optional" 协议要求的任何内容。
这样,如果您在 name
NSString 实例上调用 "Optional" 协议方法,却发现它不知道您在说什么,就不会出现问题。
请参阅 this answer 关于将协议用作类型的信息。
这也可以在 Swift w/o 中附加括号符号 - 您可以只使用 protocol as a Type 的名称。
我在研究的一些代码中遇到了以下行:
@property (nonatomic, strong) NSString <Optional> *name;
我不明白声明 可选 属性。
我确实理解对方法使用“@optional”指令。
顺便说一句:代码来自库模块而不是完整的应用程序。
这看起来像是将 属性 声明为符合名为 "Optional" 的协议的 NSString。 这与方法的 @optional 或 Swift 中的可选类型不同——它只是给协议的名称。编写它的人可能想重命名该协议,以免与该词的 w/the 其他用法发生冲突。
所以它不仅仅是一个典型的 NSString,而且还有额外的明确限制,它实现了 "Optional" 协议要求的任何内容。
这样,如果您在 name
NSString 实例上调用 "Optional" 协议方法,却发现它不知道您在说什么,就不会出现问题。
请参阅 this answer 关于将协议用作类型的信息。
这也可以在 Swift w/o 中附加括号符号 - 您可以只使用 protocol as a Type 的名称。