您好,匿名用户
随意问技术百科期待您的加入

[self method] 与 [self performSelector:@selector(method)]之间的区别

0 投票

如题,既然直接对一个实例发送方法名就可以调用这个方法,那为什么还要使用performSelector:去调呢?两者u有啥区别

用户头像 提问 2014年 2月24日 @ 正能量 上等兵 (297 威望)
分享到:

1个回答

0 投票
 
最佳答案
the performSelector: method allows you to send messages that aren’t determined until runtime.

比如:

id instance = instance_from_other_module();
[instance call_undeclared_method];   // 有编译警告
[instance performSelector:@selector(call_undeclared_method)];

用这个可以避免编译警告。

此外,performSelector的其他变体功能,可以用来延时调用和跨线程调用。

用户头像 回复 2014年 2月24日 @ Lux 上等兵 (267 威望)
选中 2013年 9月7日 @正能量
提一个问题:

相关问题

+2 投票
1 回复 302 阅读
0 投票
1 回复 32 阅读
用户头像 提问 2013年 9月7日 @ 卫宫士郎 上等兵 (173 威望)
0 投票
1 回复 5 阅读
0 投票
1 回复 27 阅读
用户头像 提问 2014年 1月30日 @ Viktor 上等兵 (290 威望)
+1 投票
1 回复 87 阅读
用户头像 提问 2013年 3月3日 @ hadoop 上等兵 (109 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...