Objective C中有线程吗?如果是这样,他们如何宣布和使用?
如果有人知道Objective C中的多线程,请与我分享.
感谢致敬.
在新线程中分离方法的简单方法是使用.
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
在NSThread
.如果您没有运行垃圾收集,则需要设置自己的自动释放池.
另一个简单的方法,如果你只是不想阻止主线程是使用.
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
上 NSObject
根据您所使用的并发类型,您还应该看看NSOperation
它可以为您提供免费锁定,以便您可以在多个线程之间共享它.
如果您正在使用Cocoa(即用于mac或iphone)进行开发,则可以访问NSThread
可用于多线程的类.谷歌搜索NSThread
将找到你的API.
你可以声明它像使用:
NSThread *mythread = [[NSThread alloc] initWithTarget:target selector:selector object:argument];
其中target和selector是你想要启动一个线程的对象和选择器,而argument是一个发送给选择器的参数.
然后使用[mythread start]启动它.
是的,目标C中存在线程概念,并且在目标C中实现多线程有多种方式.
1> NSThread
[NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil];
这将在后台创建一个新线程.从你的主线程.
2> 使用performSelector
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
如果你从后台线程调用它,将在你的主线程上执行UI任务...你也可以使用
[self performSelectorInBackground:@selector(abc:) withObject:obj];
这将创建一个后台线程.
3> 使用NSoperation
点击此链接
4> 使用GCD
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self callWebService]; dispatch_async(dispatch_get_main_queue(), ^{ [self updateUI]; }); });
将callWebService
在后台线程中,一旦完成.它将updateUI
在主线程中.更多关于GCD的信息
这几乎是iOS中使用的多线程的全部方式.希望这可以帮助.