您的位置:首页 > 其它

关于performSelector调用和直接调用有什么不同

2014-09-09 13:37 309 查看
整理自:http://www.cocoachina.com/ask/questions/show/95292

下面两句代码,在执行上有什么不一样的地方吗?

1. [self performSelector:@selector(test2)];

2. [self test2];

都在主线程中

解答:如下

1. 有一点是肯定的, performSelector的话一定是在运行时候才能发现(此时程序崩溃)

<span class="\"Apple-style-span\"" verdana,="" sans-serif;font-size:14px;\"="">大概这也是为什么写delegate的时候,为保证程序健壮性,会使用如下函数检验

view
source

print?

1.
-
(
BOOL
)respondsToSelector:(
SEL
)aSelector;


还有一点区别:

直接调用方法时候,一定要在头文件中声明该方法,使用时候,也要将头文件import进来

而使用performSelector时候, 可以不用import头文件,对包含方法的 对象 调用performSelector即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: