Objective c 有没有办法在没有@selector语法的情况下指定选择器/在幕后使用@selector会发生什么
Objective c 有没有办法在没有@selector语法的情况下指定选择器/在幕后使用@selector会发生什么,objective-c,ios,runtime,selector,Objective C,Ios,Runtime,Selector,@selector是某种较长的C语法的方便语法,还是Objective-C语言/编译器的“硬连接”部分?例如,我知道当我调用@property时,根据参数,“生成”了不同的等效Objective-C代码,即getter和setter。@selector在幕后发生了什么?它是否指定了Objective-C消息?@selector()是该语言的一部分。它指定文本SEL,就像@“指定文本NSString一样 值得理解的是,@selector表示选择器,而不是消息。选择器只是一个名称。这只是信息的一小部
@selector
是某种较长的C语法的方便语法,还是Objective-C语言/编译器的“硬连接”部分?例如,我知道当我调用@property
时,根据参数,“生成”了不同的等效Objective-C代码,即getter和setter。@selector
在幕后发生了什么?它是否指定了Objective-C消息?@selector()
是该语言的一部分。它指定文本SEL
,就像@“
指定文本NSString
一样
值得理解的是,@selector
表示选择器,而不是消息。选择器只是一个名称。这只是信息的一小部分。它甚至不携带类型信息
还要注意,@property
不会生成任何内容。它只承诺对象将响应一个或两个选择器(getter和setter)。履行该合同有几种方法@synthesis
只是其中之一。您还可以手动实现所需的方法,或者使用@dynamic
保证在运行时以某种方式对其进行处理。@selector()
是该语言的一部分。它指定文本SEL
,就像@“
指定文本NSString
一样
值得理解的是,@selector
表示选择器,而不是消息。选择器只是一个名称。这只是信息的一小部分。它甚至不携带类型信息
还要注意,
@property
不会生成任何内容。它只承诺对象将响应一个或两个选择器(getter和setter)。履行该合同有几种方法@synthesis
只是其中之一。您还可以手动实现所需的方法,或者使用@dynamic
来保证它将在运行时以某种方式进行处理。要回答标题中的问题,NSSelectorFromString
将允许您从NSString
创建选择器(您也可以使用NSStringFromSelector
执行相反的操作),虽然使用@selector
回答标题中的问题更有效,NSSelectorFromString
将允许您从NSString
创建一个选择器(您也可以使用NSStringFromSelector
执行相反的操作),但使用@selector
更有效,@selector(popViewControllerAnimated:)
与(SEL*)popViewControllerAnimated:
大致相同?它只是SEL
,而不是SEL*
,但如果后者是合法语法,则基本上是正确的。这有点像说@“foo”
与(NSString*)foo
相同。对于true的粗略版本来说,这是正确的。因此,大致上,@selector(popViewControllerAnimated:)
与(SEL*)popViewControllerAnimated:
?它只是SEL
,而不是SEL*
,但如果后者是合法语法,则基本上是正确的。这有点像说@“foo”
与(NSString*)foo
相同。对于足够粗略的true版本,这是正确的。具体来说,@selector
指令在编译时转换为SEL,而NSSelectorFromString()
是在运行时调用的正常函数。具体来说,@selector
指令在编译时转换为SEL,而NSSelectorFromString()
是在运行时调用的正常函数。