解析在iPhone应用中NSThread创建Run Loop

iPhone应用中NSThread创建Run Loop是本文要介绍的内容,虽然iphone为我们提供了很多简单易于操作的线程方法。 
IPhone多线程编程提议用NSOperation和NSOperationQueue,这个确实很好用。 
但是有些情况下,我们还是在运行一些长线任务或者复杂任务的时候需要用比较原始的NSThread。这就需要为NSThread创建一个run loop. 
[pre]NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(playerThread: ) object:nil];  

    1. [thread start];  

//如果要利用NSOperation,原理类似。只需要加入到queue里面去就好了。。queue会在合适的时机调用方法,下面代码作为参考。

- (void) playerThread: (void*)unused   

{   

audioRunLoop = CFRunLoopGetCurrent();//子线程的runloop引用  

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//子线程的  run loop

[self initPlayer];

CFRunLoopRun(); //运行子线程的  run loop,这里就会停住了。

[pool release];  

}

 

// 实现一个timer,用于检查子线程的工作状态,并在合适的时候做任务切换。或者是合适的时候停掉自己的  run loop

-(void) initPlayer {   

// 在这里你可以初始化一个工作类,比如声音或者视频播放   

NSTimer *stateChange = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:  

   @selector(checkStatuserInfo:nil repeats:YES];  

}  

-(void) checkState:(NSTimer*) timer   

{   

if(需要退出自线程了) {  

//释放子线程里面的资源  

CFRunLoopStop( CFRunLoopGetCurrent());//结束子线程任务  }   

}

转载于:https://www.cnblogs.com/iOSJason/p/4084368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值