目标C中的线程
回答
如果您正在开发使用Cocoa(即用于Mac或iPhone),则可以访问NSThread
类,该类可用于多线程。谷歌搜索NSThread
会找到你的API。
你可以声明它就像使用:
NSThread *mythread = [[NSThread alloc] initWithTarget:target selector:selector object:argument];
如果目标和选择是要启动一个线程对象,并选择和参数是要发送到选择的参数。
然后用[mythread start]启动它。
一个简单的方法就是在新线程中分离一个方法就是使用。
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
on NSThread
。如果你没有运行垃圾收集,你需要建立你自己的autorelease池。
另一个简单的方法,如果你只是不想阻止主线程是使用。
上NSObject
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
取决于你是什么类型的并发性,你也应该看看NSOperation
,可以给你免费的锁定后,这样你就可以除其他事项外多个线程之间共享。
你也可以看看NSOperation
要看到这样的一个例子,看看德鲁·麦科马克对MacResearch岗位。
在远离诸如detachNewThreadSelector之类的东西之前:一定要查看Apple的官方文档。对于选项的高级概述(包括操作队列,调度队列等),有Concurrency Programming Guide。而且,对于较低级别(并且不太推荐)的线程,有Threading Programming Guide。
你绝对不想在没有看到苹果首先就这个主题说什么的情况下开始转动线程。他们用GCD等工具做了很多工作,以便更容易和更安全地编写并发程序。
是有在Objective 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
。 More about GCD
这几乎是iOS中使用的所有多线程方式。希望这可以帮助。
- 1. 目标中的线程C
- 2. 目标C线程
- 3. iOS目标中的多线程C
- 4. 目标c - NSTimer,CADisplayLink,线程
- 5. 目标C线程问题
- 6. 知道线程目标C
- 7. 目标C顺序启动线程
- 8. 目标C线程/ Runloop /并发考虑
- 9. ANTLR3 C目标线程安全吗?
- 10. 线程安全性 - 目标C
- 11. 线程转储在目标C
- 12. 目标C中的最佳多线程方法?
- 13. 目标C中的代表仅在特定线程上
- 14. 目标C中的线程和二维数组?
- 15. 如何同步目标C中的多个线程操作?
- 16. C中的多线程目录工作
- 17. C#中的多线程 - 更新标签
- 18. 标准C++中的异步线程
- 19. 如何在目标线程
- 20. 如何在目标中使用线程c
- 21. 无法在目标中产生新线程 - C
- 22. 如何在目标C中同时运行两个多线程?
- 23. 如何知道该线程正在目标c中运行?
- 24. 目标C,约标签栏和多线程
- 25. 目标C中的类自动接线C
- 26. 线程安全的静态变量目标c
- 27. 折线图中的目标线
- 28. 目标C与目标C++
- 29. 针对线程安全调用的目标UI线程控制
- 30. 私人课程目标C
NSOperation仅支持iOS 4.0或更高版本。 – 2011-04-15 09:25:29