亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS多線程編程NSThread的使用方法

2020-07-26 02:39:51
字體:
來源:轉載
供稿:網友

IOS多線程編程NSThread的使用方法

NSThread是多線程的一種,有兩種方法創建子線程

(1)優點:NSThread 比GCD、NSOperation都輕量級

(2)缺點:需要自己管理線程的生命周期,線程同步。線程同步對數據的加鎖會有一定的系統開銷

第一種是隱藏創建,有以下幾種方式:

(1)多用于串行:- (id)performSelector:(SEL)aSelector withObject:(id)object;
(2)后臺執行,多用于并行:- (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg;
(3)延遲執行:- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
(4)回到主線程執行:- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;
注意:
(1)通過方法" + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument; ",或"+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget"停止執行; 

示例:

//創建子線程-隱式方法

// 子線程-串行 [self performSelector:@selector(showCount:) withObject:@(11)]; [self performSelector:@selector(showCount:) withObject:@(12)]; [self performSelector:@selector(showCount:) withObject:@(23)]; 
// 子線程-并行(后臺)  [self performSelectorInBackground:@selector(showCount:) withObject:@(41)]; [self performSelectorInBackground:@selector(showCount:) withObject:@(42)]; 
// 回到主線程 [self performSelectorOnMainThread:@selector(showCount:) withObject:@(51) waitUntilDone:YES]; 
// 子線程延遲執行 [self performSelector:@selector(showCount:) withObject:@(61) afterDelay:5.0]; 
// 停止 [NSObject cancelPreviousPerformRequestsWithTarget:self]; 

 第二種是顯示創建,方式如下:

 - (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(nullable id)argument; 

注意:

 (1)通過方法" - (void)start; "開始執行;
 (2)通過方法" - (void)cancel; "停止執行;  

 示例:

 //創建子線程-顯示方法

self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(showCount:) object:@(61)]; self.thread.name = @"計數"; [self.thread start]; [self.thread cancel]; 

代碼示例

- (void)showCount:(NSNumber *)number {  NSInteger count = arc4random() % 1000;  count = 1000;  for (int i = 0; i < count; i++)  {   NSLog(@"第 %@ 個 i = %@", number, @(i));      // 休眠n秒再執行   [NSThread sleepForTimeInterval:0.2];      // 停止 //  BOOL isStop = [self.thread isCancelled]; //  if (isStop) //  { //   NSLog(@"2 停止"); //   break; //  }   if (isCancelThread)   {    NSLog(@"2 停止");    break;   }  } } 
bool isCancelThread = NO; - (void)stopClick {  [NSObject cancelPreviousPerformRequestsWithTarget:self];    if (self.thread)  {   BOOL isExecuting = [self.thread isExecuting];   if (isExecuting)   {    NSLog(@"1 停止"); //   [self.thread cancel];    isCancelThread = YES;   }  } } 
- (void)downloadImage:(NSString *)imageUrl {  NSURL *url = [NSURL URLWithString:imageUrl];  NSData *data = [[NSData alloc] initWithContentsOfURL:url];  UIImage *image = [[UIImage alloc] initWithData:data];  if (image == nil)  {     }  else  { //  [self performSelectorOnMainThread:@selector(updateImage:) withObject:image waitUntilDone:YES];   [self performSelectorInBackground:@selector(updateImage:) withObject:image];  }   // NSURL *url = [NSURL URLWithString:imageUrl]; // NSURLRequest *request = [NSURLRequest requestWithURL:url]; // NSURLSession *session = [NSURLSession sharedSession]; // NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { //   //  // 輸出返回的狀態碼,請求成功的話為200 //  NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; //  NSInteger responseStatusCode = [httpResponse statusCode]; //  NSLog(@"%ld", responseStatusCode); //   //  UIImage *image = [UIImage imageWithData:data]; ////  [self performSelectorOnMainThread:@selector(updateImage:) withObject:image waitUntilDone:YES]; //  [self performSelectorInBackground:@selector(updateImage:) withObject:image]; // }]; //  // // 使用resume方法啟動任務 // [dataTask resume]; } 
- (void)updateImage:(UIImage *)image {  self.imageview.image = image;   // self.imageview = [[UIImageView alloc] initWithFrame:CGRectMake(10.0, 10.0, (CGRectGetWidth(self.view.bounds) - 10.0 * 2), (CGRectGetWidth(self.view.bounds) - 10.0 * 2))]; // [self.view addSubview:self.imageview]; // self.imageview.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.2]; //  // self.imageview.image = image; } 
NSString *imageUrl = @"http://ww1.sinaimg.cn/crop.0.0.1242.1242.1024/763fb12bjw8empveq3eq8j20yi0yiwhw.jpg"; // 隱藏創建 // [self performSelectorInBackground:@selector(downloadImage:) withObject:imageUrl]; [self performSelectorOnMainThread:@selector(downloadImage:) withObject:imageUrl waitUntilDone:YES]; // 創建子線程-顯示方法 self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(downloadImage:) object:imageUrl]; self.thread.name = @"imageDownload"; [self.thread start]; 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女无圣光视频| 中文国产亚洲喷潮| 亚洲欧美国产va在线影院| 成人免费观看49www在线观看| 91国产中文字幕| 国产精品丝袜视频| 91免费欧美精品| 亚洲国产精品人人爽夜夜爽| 亚洲午夜精品久久久久久久久久久久| 亚洲精品动漫久久久久| www.亚洲人.com| 欧美激情亚洲精品| 欧美精品videossex88| 91免费在线视频网站| 日韩久久免费电影| 日韩中文字幕在线观看| 精品国内亚洲在观看18黄| 欧美第一黄色网| 91麻豆桃色免费看| 欧美激情免费视频| 久久精品中文字幕一区| 精品夜色国产国偷在线| 欧美在线精品免播放器视频| 亚洲老头同性xxxxx| 北条麻妃在线一区二区| 亚洲欧美日本另类| 亚洲国产精品电影在线观看| 日韩av电影手机在线| 主播福利视频一区| 国产亚洲精品综合一区91| 欧美人成在线视频| 国产精品揄拍500视频| 国产精品久久久久久婷婷天堂| 国产日韩欧美夫妻视频在线观看| 日韩精品极品在线观看| 欧美精品做受xxx性少妇| 狠狠久久亚洲欧美专区| 按摩亚洲人久久| 欧美午夜激情在线| 97国产成人精品视频| 久久亚洲综合国产精品99麻豆精品福利| 欧美第一黄网免费网站| 一区二区三区动漫| 久久不射热爱视频精品| 亚洲精品小视频| 亚洲午夜未满十八勿入免费观看全集| 国产欧美在线视频| 精品高清美女精品国产区| 日韩av手机在线看| 国产精品一久久香蕉国产线看观看| 三级精品视频久久久久| 欧美日韩成人在线播放| 5278欧美一区二区三区| 2024亚洲男人天堂| 欧洲s码亚洲m码精品一区| 美女黄色丝袜一区| 国产丝袜高跟一区| 狠狠色狠色综合曰曰| 国产亚洲精品美女| 精品色蜜蜜精品视频在线观看| 7m第一福利500精品视频| 国产中文日韩欧美| 欧美亚洲国产视频小说| 国产主播欧美精品| 国产精品久久久久久久久久免费| 爽爽爽爽爽爽爽成人免费观看| 欧美日韩福利电影| 国语自产精品视频在线看抢先版图片| 日韩精品在线播放| 色青青草原桃花久久综合| 亚洲人成毛片在线播放| 91亚洲午夜在线| 97国产suv精品一区二区62| 美乳少妇欧美精品| 欧美人与物videos| 国产日韩欧美日韩大片| 日韩电影中文字幕在线观看| 69久久夜色精品国产69| 奇米一区二区三区四区久久| 国产日韩一区在线| 俺去了亚洲欧美日韩| 尤物yw午夜国产精品视频明星| 亚洲最大av网| 成人黄色午夜影院| 日韩欧美在线视频| 一区三区二区视频| 久久精品国产一区二区电影| 亚洲精品视频中文字幕| 精品一区精品二区| 亚洲视频999| 国产成+人+综合+亚洲欧洲| 中文字幕亚洲自拍| 国产精品视频在线观看| 亚洲欧美成人精品| 九九热精品在线| 国产成人av在线| 国产精品久久久久久中文字| 91在线中文字幕| 国产精品a久久久久久| 伊人久久综合97精品| 日韩欧美一区视频| 91精品国产91久久久| 91国产精品视频在线| 国产精品国产三级国产aⅴ浪潮| 亚洲视频欧洲视频| 精品亚洲一区二区三区四区五区| 精品视频在线播放色网色视频| 黄网动漫久久久| 日产精品99久久久久久| 亚洲福利视频久久| 国产精品影片在线观看| 欧美成人午夜影院| 自拍偷拍免费精品| 欧美视频中文在线看| 成人在线激情视频| www.色综合| 国内外成人免费激情在线视频网站| 久久影视电视剧免费网站清宫辞电视| 国产网站欧美日韩免费精品在线观看| 精品亚洲男同gayvideo网站| 成人欧美在线视频| 国产精品久久久久9999| 精品女同一区二区三区在线播放| 亚洲精品国产拍免费91在线| 亚洲大尺度美女在线| 欧美在线性视频| 裸体女人亚洲精品一区| 欧美亚洲成人免费| 亚洲精品wwww| 亚洲男人天堂视频| 中文字幕九色91在线| 亚洲人成网站999久久久综合| 日韩成人xxxx| 国产精品久久久久久久久粉嫩av| 国产精品白丝av嫩草影院| 亚洲天堂av网| 日韩成人中文字幕在线观看| 精品久久久免费| 日韩a**中文字幕| 亚洲国产精品电影| 日韩在线中文字幕| 国产亚洲精品va在线观看| 欧美日韩午夜视频在线观看| 精品欧美aⅴ在线网站| 国产成人精品一区| 成人黄色av免费在线观看| 亚洲国产精品成人av| 久久中文字幕一区| 午夜精品免费视频| 亚洲欧洲在线播放| 国产日韩欧美日韩| 欧美日韩亚洲一区二| 日韩精品有码在线观看| 午夜精品蜜臀一区二区三区免费| 亚洲精品suv精品一区二区| 国产成人中文字幕| 国产精品偷伦免费视频观看的| 在线精品高清中文字幕| 欧美老妇交乱视频| 成人性生交大片免费观看嘿嘿视频| 国产精品久久久av久久久| 国产精品成人免费电影| 热门国产精品亚洲第一区在线| 91在线无精精品一区二区|