为什么在属性声明中使用<optional>?</optional>

时间:2015-01-12 22:35:12

标签: objective-c properties

我在一些正在研究的代码中遇到以下行:

@property (nonatomic, strong) NSString <Optional> *name;

我不明白声明可选属性。
我确实理解使用'@optional'指令来表示方法。

BTW:代码来自库模块与完整应用程序。

1 个答案:

答案 0 :(得分:3)

这看起来像是将属性声明为符合名为“Optional”的协议的NSString。 这与方法的@optional或Swift中的可选类型不同 - 它只是给协议的名称。编写它的人可能想要重命名协议,这样它就不会与该词的其他用法发生冲突。

因此,它不仅仅是一个典型的NSString,而且还有其他显式限制,它实现了“Optional”协议所需的任何内容。

这样,如果在name NSString实例上调用“可选”协议方法,它就不会导致问题,只是发现它不知道你在说什么。

有关使用协议作为类型的信息,请参阅this answer

这也可以在没有附加括号表示法的Swift中使用 - 您只需使用protocol as a Type的名称即可。