我在一些正在研究的代码中遇到以下行:
@property (nonatomic, strong) NSString <Optional> *name;
我不明白声明可选属性。
我确实理解使用'@optional'指令来表示方法。
BTW:代码来自库模块与完整应用程序。
答案 0 :(得分:3)
这看起来像是将属性声明为符合名为“Optional”的协议的NSString。 这与方法的@optional或Swift中的可选类型不同 - 它只是给协议的名称。编写它的人可能想要重命名协议,这样它就不会与该词的其他用法发生冲突。
因此,它不仅仅是一个典型的NSString,而且还有其他显式限制,它实现了“Optional”协议所需的任何内容。
这样,如果在name
NSString实例上调用“可选”协议方法,它就不会导致问题,只是发现它不知道你在说什么。
有关使用协议作为类型的信息,请参阅this answer。
这也可以在没有附加括号表示法的Swift中使用 - 您只需使用protocol as a Type的名称即可。