有没有办法在没有@selector语法的情况下指定一个选择器/使用@selector在幕后发生什么

时间:2012-04-02 20:04:11

标签: objective-c ios runtime selector

@selector是某种较长C语法的便捷语法,还是Objective-C语言/编译器的“硬连线”部分?例如,我知道当我调用@property时,根据参数,不同的等效Objective-C代码被“生成”re:getters和setter。 @selector幕后发生了什么?它是否指定了Objective-C消息?

2 个答案:

答案 0 :(得分:3)

@selector()是该语言的一部分。它指定文字SEL,就像@""指定文字NSString一样。

值得理解的是@selector代表选择器,而不是消息。选择器只是一个名称。它只是消息的一小部分。它甚至不带类型信息。

另请注意,@property不会生成任何内容。它只是承诺对象将响应一个或两个选择器(getter和setter)。有几种方法可以履行合同。 @synthesize只是其中之一。您也可以手动实现所需的方法,或使用@dynamic保证它将以某种方式在运行时处理。

答案 1 :(得分:2)

要回答标题中的问题,NSSelectorFromString将允许您从NSString创建选择器(您也可以与NSStringFromSelector相反),尽管使用效率更高@selector