NSThread三種方式建立子執行緒
/** * NSThread建立執行緒方式1 * 1> 先建立初始化執行緒 * 2> start開啟執行緒 */ -(void)creatNSThread { NSThread *thread=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"執行緒A"]; //為執行緒設定一個名稱 thread.name=@"執行緒A"; //開啟執行緒 [thread start]; NSThread *thread2=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"執行緒B"]; //為執行緒設定一個名稱 thread2.name=@"執行緒B"; //開啟執行緒 [thread2 start]; } /** * NSThread建立執行緒方式2 *建立完執行緒直接(自動)啟動 */ -(void)creatNSThread2 { // NSThread *thread=[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"建立完執行緒直接(自動)啟動"]; [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"建立完執行緒直接(自動)啟動"]; } /** * NSThread建立執行緒方式3 * 隱式建立執行緒, 並且直接(自動)啟動 */ -(void)creatNSThread3 { //在後臺執行緒中執行===在子執行緒中執行 [self performSelectorInBackground:@selector(run:) withObject:@"隱式建立"]; } -(void)run:(NSString *)str { //獲取當前執行緒 NSThread *current=[NSThread currentThread]; //列印輸出 for (int i=0; i<100; i++) { NSLog(@"run---%@---%@%i",current,str,i); } }