使用-performSelector:只是调用方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我想知道以下两个语句有什么区别?

[object performSelector:@selector(doSomething)]; 

[object doSomething];
提问于
用户回答回答于

performSelector允许动态地确定哪个选择器调用给定对象上的选择器。换句话说,选择器不需要在运行前确定。

因此即使这些是等同的:

[anObject aMethod]; 
[anObject performSelector:@selector(aMethod)]; 

第二种形式可以让你做到这一点:

SEL aSelector = findTheAppropriateSelectorForTheCurrentSituation();
[anObject performSelector: aSelector];

用户回答回答于

动态生成的选择器对于在编译代码时不(通常不可能)知道要调用的方法的名称

扫码关注云+社区