iOS 創建多線程的三種方法 – iPhone手機開發技術文章 iPhone軟體開發教學課程

(1)//通過NSObject的方法創建線程
    //(這個方法會自動開辟一個後臺線程,參數1:在這個後臺線程中執行的方法,參數2:用於傳遞參數)
    [self performSelectorInBackground:@selector(banZhuanPlus) withObject:nil];

(2)//通過NSThread創建線程(參數1:方法的執行者;參數2:在線程中執行的方法;參數3:用於傳遞參數)
//第一步:創建線程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(banZhuanPlus) object:nil];
//第二步:執行
[thread start];

[thread release];

(3)//NSOperation就是一個操作單元,用來執行方法,是一個抽象類,必須子類化或者使用系統創建好的子類(NSInvocationOperation or NSBlockOperation)
// //NSOperation是最小的操作單元;隻能夠執行一次;

// //NSInvocationOperation第一步:創建
NSInvocationOperation *invocation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(banZhuanPlus) object:nil];
// //第二步:(不設置的話不添加到隊列)在主線程中執行
// [invocation start];

//NSBlockOperation第一步:創建
NSBlockOperation *block = [NSBlockOperation blockOperationWithBlock:^{
[self banZhuanPlus];
}];
// //第二步:執行(在主線程中執行)
// [block start];//如果添加到隊列就不要start瞭

// 這個隊列會自動幫咱們創建一個輔助的線程
//這個隊列裡面隻能夠添加NSOperation以及子類的對象;
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue setMaxConcurrentOperationCount:2];//設置最大並行數;
[queue addOperation:block];//隻要把操作隊列添加到隊列中就會執行;
[queue addOperation:invocation];

//隊列: 先進先出
//棧: 先進後出

//隊列中涉及到串行和並行
//串行: 一次隻能執行一個任務
//並行: 一次可以執行多個任務
(整片復制的時候,註意沒有註釋的屬於一體)

發佈留言