Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 有没有办法在没有@selector语法的情况下指定选择器/在幕后使用@selector会发生什么_Objective C_Ios_Runtime_Selector - Fatal编程技术网

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()
是在运行时调用的正常函数。