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 选择器的需求是什么?_Objective C_Selector_Objective C Runtime - Fatal编程技术网

Objective c 选择器的需求是什么?

Objective c 选择器的需求是什么?,objective-c,selector,objective-c-runtime,Objective C,Selector,Objective C Runtime,可能重复: 我已经阅读了苹果关于选择器的文档,但我仍然不明白为什么需要它们 据我所知,选择器相当于函数指针。是吗?选择器不是函数指针 选择器是唯一的地址方法标识符(消息名称)。messenger函数(objc_msgSend_*())需要它们才能快速运行:在查找方法名称时,messenger不需要每次都进行相当昂贵的字符串比较,因为选择器在内存中有唯一的地址,所以简单的指针比较就足够了。选择器不是函数指针 选择器是唯一的地址方法标识符(消息名称)。messenger函数(objc_msgSen

可能重复:

我已经阅读了苹果关于选择器的文档,但我仍然不明白为什么需要它们


据我所知,选择器相当于函数指针。是吗?

选择器不是函数指针


选择器是唯一的地址方法标识符(消息名称)。messenger函数(objc_msgSend_*())需要它们才能快速运行:在查找方法名称时,messenger不需要每次都进行相当昂贵的字符串比较,因为选择器在内存中有唯一的地址,所以简单的指针比较就足够了。

选择器不是函数指针


选择器是唯一的地址方法标识符(消息名称)。messenger函数(objc_msgSend_*())需要它们才能快速运行:当查找方法名时,messenger不需要每次都进行相当昂贵的字符串比较,因为选择器在内存中有一个唯一的地址,因此,一个简单的指针比较就足够了。

选择器用于获取对象的方法实现


例如,几乎每个对象都实现了
description
方法,即使它从其超类继承了实现。函数指针只能指向
说明
的一个特定实现(例如,它只能指向NSString的版本或NSNumber的版本,但不能同时指向两者)。您不能将一个类的
description
实现的函数指针用于每个类,但您可以使用相同的
description
选择器,并且无论使用哪个对象作为目标,始终使用正确的方法实现。

选择器用于获取对象的方法实现

例如,几乎每个对象都实现了
description
方法,即使它从其超类继承了实现。函数指针只能指向
说明
的一个特定实现(例如,它只能指向NSString的版本或NSNumber的版本,但不能同时指向两者)。您不能将一个类的
描述
实现的函数指针用于每个类,但您可以使用相同的
描述
选择器,并且无论使用哪个对象作为目标,都将始终使用正确的方法实现。

和的可能重复和可能重复