Kru*_*nal 1 objective-c method-call
我曾经使用iOS,但我没有得到这个所有方法有什么区别,
我应该使用哪种语法来调用MehodName?
(1) [self MehodName];
(2) [self performSelector:@selector(MehodName) withObject:nil];
(3) [self performSelectorInBackground:@selector(MehodName) withObject:nil];
(4) [self performSelectorOnMainThread:@selector(MehodName) withObject:nil waitUntilDone:YES];
(5) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
[self MehodName];
});
(6) dispatch_sync(dispatch_get_main_queue(), ^{
[self MehodName];
});
Run Code Online (Sandbox Code Playgroud)
请提前帮助和谢谢.
根据您的要求,所有方式都是正确的方式
(1)在当前执行代码的线程所在的同一线程上执行该方法.(可以是后台线程或主线程).
(2)1和2非常相似,但(2)的优点是可以动态确定在运行时调用哪个选择器.
(3)与[NSThread detachNewThread]相同,它创建一个新的线程(表示未在主线程上执行的选择器),通常用于webService图像获取等.
(4)在主线程上执行选择器(通常用于执行UI更改)如果在此线程上执行的方法太长或太重,则在该持续时间内挂起应用程序,因为该方法在优先级上执行
(5)调度异步用于执行可以异步完成的任务,在你的情况下使用(全局队列是并发队列)(在当前情况下不在主线程上执行)(如重型数据库插入)背景图像获取,那些在完成后稍后回调的方法
(6)dispatch sync同步执行该方法(在主线程的情况下)(通常用于登录操作,验证等).
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |