IOS多线程处理

酒鬼 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,调出主线程中的方法去刷新。

相关推荐