@selector
是某种较长C语法的便捷语法,还是Objective-C语言/编译器的“硬连线”部分?例如,我知道当我调用@property
时,根据参数,不同的等效Objective-C代码被“生成”re:getters和setter。 @selector
幕后发生了什么?它是否指定了Objective-C消息?
答案 0 :(得分:3)
@selector()
是该语言的一部分。它指定文字SEL
,就像@""
指定文字NSString
一样。
值得理解的是@selector
代表选择器,而不是消息。选择器只是一个名称。它只是消息的一小部分。它甚至不带类型信息。
另请注意,@property
不会生成任何内容。它只是承诺对象将响应一个或两个选择器(getter和setter)。有几种方法可以履行合同。 @synthesize
只是其中之一。您也可以手动实现所需的方法,或使用@dynamic
保证它将以某种方式在运行时处理。
答案 1 :(得分:2)
要回答标题中的问题,NSSelectorFromString
将允许您从NSString
创建选择器(您也可以与NSStringFromSelector
相反),尽管使用效率更高@selector
。