中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
IOS 線程處理 子線程的啟動與結(jié)束

IOS 線程處理 子線程的啟動與結(jié)束

IOS中,如果要在主線程中啟動一個子線程,可以又兩種方法:

[cpp] 
[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 
這是在cocoa早期提供的方法,因此你可以在任何版本的ios和mac上調(diào)用此方法。
在 OS X v10.5(or later)和IOS中,蘋果又提供了一種方法,可以允許你獲得你的thread句柄,并且更方便的讓主線程控制子線程。

[cpp] 
NSThread* myThread = [[NSThread alloc] initWithTarget:self 
                                        selector:@selector(myThreadMainMethod:) 
                                        object:nil]; 
[myThread start];  // Actually create the thread 

如果要停止子線程,有兩種方法:
第一種,是在子線程中執(zhí)行:

[cpp] 
[NSThread exit]; 

另一種是在主線程執(zhí)行:
[cpp]
[myThread cancel];  
要注意的是,[mThread cancel]; 并不能exit線程,只是標(biāo)記為canceled,但線程并沒有死掉。加入你在子線程中執(zhí)行了一個循環(huán),則cancel后,循環(huán)還在繼續(xù),你需要在循環(huán)的條件判斷中加入 !mThread.isCancelled 來判斷子線程是否已經(jīng)被cancel來決定是否繼續(xù)循環(huán)。

下面是我的一個測試demo,可以參考一下:
[cpp] 
@synthesize mThread; 
- (void)viewDidLoad 

    [super viewDidLoad]; 
     
    NSLog(@"main thread:%@",[NSThread currentThread]); 
     mThread=[[NSThread alloc] initWithTarget:self selector:@selector(subThreadMethod) object:nil]; 
    [NSThread detachNewThreadSelector:@selector(performMethod) toTarget:self withObject:nil]; 
  

-(void)subThreadMethod{ 
    int i=1; 
    while (i++>0 && ![[NSThread currentThread]isCancelled]) { 
        NSLog(@"subthread i:%d ,thread:%@",i,[NSThread currentThread]); 
    }   

 
- (IBAction)startThread:(id)sender { 
    NSLog(@"startThread...."); 
    [mThread start]; 

 
- (IBAction)stopThread:(id)sender { 
    NSLog(@"mThread.isCancelled: %d",mThread.isCancelled); 
    if (!mThread.isCancelled) { 
        [mThread cancel]; 
//        [mThread exit]; //exit 是類方法,不可以用在對象上 
    } 

 
- (IBAction)performOnSubThread:(id)sender { 
    //在子線程調(diào)用方法 
     [self performSelector:@selector(performMethod) onThread:mThread withObject:nil waitUntilDone:NO]; 

-(void)performMethod{ 
    NSLog(@"performMethod.... thread:%@",[NSThread currentThread]);     

@end 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
iOS多線程開發(fā) NSThread
iOS
多線程 NSOperation
線程基礎(chǔ)
淺談iOS開發(fā)中方法延遲執(zhí)行的幾種方式
iOS中使用子線程的完整方法
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服