酒鬼 2012-12-02
http://geeklu.com/2012/02/thread/
http://www.cnblogs.com/pengyingh/articles/2346102.html
http://blog.sina.com.cn/s/blog_91550f4b01011d5u.html
http://www.cnblogs.com/zhulin/archive/2011/07/11/2102793.html
http://blog.csdn.net/a6472953/article/details/8092239
+ detachNewThreadSelector:toTarget:withObject: 和 - performSelectorInBackground:withObject: 的效果基本一致,如果不打算支持iOS3的话,用GCD要方便很多很多
performSelectorOnMainThread是指在主线程上执行某个方法,比如数据下载后,更新UI界面等操作
举例说明怎么简单的创建一个子线程。
用到的类是NSThread类,这里使用detachNewTheadSelector:toTagaet:withObject创建一个线程。
函数setupThread:(NSArray*)userInfor。通过userInfor将需要的数据传到线程中。
函数定义:
-(void)setupThread:(NSArray*)userInfor{
[NSThread detachNewThreadSelector:@selector(threadFunc:) toTarget:self withObject:(id)userInfor];
}
- (void)threadFunc:(id)userInfor{
NSAutoreleasePool*pool = [[NSAutoreleasePool alloc] init];
//。。。。需要做的处理。
//这里线程结束后立即返回
[self performSelectorOnMainThread:@selector(endThread) withObject:nil waitUntilDone:NO];
[pool release];
}
performSelectorOnMainThread通知主线程执行函数endThread。也可以使用performSelector:onThread:withObject:waitUntil 通知某线程执行线程结束后的处理。
线程内不要刷新界面。如果需要刷新界面,通过performSelectorOnMainThread,调出主线程中的方法去刷新。