[self performSelectorOnMainThread:@selector(customFoo:) withObject:obj waitUntilDone:YES];
和
[self customFoo:obj];
据我所知,如果在主线程上调用第二个,它们之间没有任何区别......对吗?
他们两个之间的基本区别是什么?
[self performSelectorOnMainThread:@selector(customFoo:) withObject:obj waitUntilDone:YES];
和
[self customFoo:obj];
据我所知,如果在主线程上调用第二个,它们之间没有任何区别......对吗?
他们两个之间的基本区别是什么?
运行时行为是相同的。但是在编译代码时有一个区别:第二个只有在定义了方法的情况下才会编译customFoo:
。
performSelector:向接收者发送指定的消息,并返回消息的结果。
PerformSelector 用于调用您想要执行的方法,这意味着您可以选择不同的选项来执行特定的任务(方法)示例...
– performSelector:withObject:afterDelay: // will execute method after specific delay..
– performSelector:withObject:afterDelay:inModes:
– performSelectorOnMainThread:withObject:waitUntilDone:
– performSelectorOnMainThread:withObject:waitUntilDone:modes:
– performSelector:onThread:withObject:waitUntilDone:
– performSelector:onThread:withObject:waitUntilDone:modes:
– performSelectorInBackground:withObject:
// 在后台执行任务。所以,你的 ManinThread(Application) 不会停止响应......就像多线程一样......
直接方法 ( [self customFoo:obj];
) 不会提供执行任务的选择。
希望对你有帮助...