当前位置: 首页 > news >正文

微信小店可以做分类网站做一套网站多钱

微信小店可以做分类网站,做一套网站多钱,wordpress主题汉化语言包,xml wordpress在IOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行#xff0c;iOS系统进程默认启动一个主线程#xff0c;用来响应用户的手势操作以及UI刷新#xff0c;因此主线程又叫做UI线程。 前面的Blog说明了NSThread以及GCD处理并发线程以及线程安全#xff08;线…在IOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行iOS系统进程默认启动一个主线程用来响应用户的手势操作以及UI刷新因此主线程又叫做UI线程。 前面的Blog说明了NSThread以及GCD处理并发线程以及线程安全线程锁synchronized(){},线程通信从子线程向主线程传递值刷新界面接下来讨论线程的延迟与执行的单一化唯一执行一次。 1.延迟 (1)最简单粗暴的方法是对线程本身执行挂起操作 [NSThread sleepForTimeInterval:] 另外使用隐式创建开启线程的方法 self performSelector:withObject:afterDelay: (2)使用GCD处理延迟操作线程任务 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(#delayInSeconds# * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ #code to be executed after a specified delay# }); 2.只执行一次 static dispatch_once_t onceToken; dispatch_once(onceToken, ^{ #code to be executed once# }); 3.为了方便管理任务队列中的任务GCD特用分组的方式来管理 dispatch_group_t group dispatch_group_create(); dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_group_async(group, queue, ^{ } dispatch_group_notify(group, queue, ^{} 4.NSOperation与NSOperationQueue 为了对线程的操作更加的面向对象APPLE对GCD进行了封装特将任务—-封装成NSOperation 队列——封装成NSOperationQueue (1)NSOperation有两个子类NSInvocationOperation以及NSBlockOperation NSInvocationOperation的创建方法如下 // 创建队列 NSOperationQueue *queue [[NSOperationQueue alloc] init] // 创建操作 NSInvocationOperation *operation [[NSInvocationOperation alloc] initWithTarget:self selector:selector(download) object:nil]; // operation直接调用start是同步执行在当前线程执行操作 // [operation start]; // 添加操作到队列中会自动异步执行 [queue addOperation:operation];2NSBlockOperation的创建方法 NSBlockOperation *operation1 [NSBlockOperation blockOperationWithBlock:^{ NSLog(”—下载图片—-11—%”, [NSThread currentThread]); }]; [operation1 addExecutionBlock:^{NSLog(---下载图片----12---%, [NSThread currentThread]); }];NSBlockOperation *operation2 [NSBlockOperation blockOperationWithBlock:^{NSLog(---下载图片----2---%, [NSThread currentThread]); }];NSBlockOperation *operation3 [NSBlockOperation blockOperationWithBlock:^{NSLog(---下载图片----3---%, [NSThread currentThread]); }];NSBlockOperation *operation4 [NSBlockOperation blockOperationWithBlock:^{NSLog(---下载图片----4---%, [NSThread currentThread]); }];// 1.创建队列 NSOperationQueue *queue [[NSOperationQueue alloc] init];// 主队列// NSOperationQueue *queue [NSOperationQueue mainQueue]; // 2.添加操作到队列中自动异步执行 [queue addOperation:operation1]; [queue addOperation:operation2]; [queue addOperation:operation3]; [queue addOperation:operation4];其中NSOperation类可以添加执行代码块addExecutionBlock 【NSOperationQueue mainQueue】是获取主队列其实底层相当于dispatch_get_mainQueue() NSBlockOperation *operation [[NSBlockOperation alloc] init];[operation addExecutionBlock:^{NSLog(---下载图片----1---%, [NSThread currentThread]); }];[operation addExecutionBlock:^{NSLog(---下载图片----2---%, [NSThread currentThread]); }];[operation addExecutionBlock:^{NSLog(---下载图片----3---%, [NSThread currentThread]); }];[operation start];// 任务数量 1才会开始异步执行5.线程的通信 NSOperationQueue *queue [[NSOperationQueue alloc] init]; [queue addOperationWithBlock:^{ // 1.异步下载图片 NSURL *url [NSURL URLWithString:”http://d.hiphotos.baidu.com/image/pic/item/37d3d539b6003af3290eaf5d362ac65c1038b652.jpg“]; NSData *data [NSData dataWithContentsOfURL:url]; UIImage *image [UIImage imageWithData:data]; // 2.回到主线程显示图片// [self performSelectorOnMainThread:#(SEL)# withObject:#(id)# waitUntilDone:#(BOOL)#]; // dispatch_async(dispatch_get_main_queue(), ^{ // // }); [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.imageView.image image; }]; }]; 控制Operation之间的运行顺序可以通过添加依赖来实现 - (void)dependency { /** 假设有A、B、C三个操作要求 1. 3个操作都异步执行 2. 操作C依赖于操作B 3. 操作B依赖于操作A */ // 1.创建一个队列非主队列 NSOperationQueue *queue [[NSOperationQueue alloc] init];// 2.创建3个操作 NSBlockOperation *operationA [NSBlockOperation blockOperationWithBlock:^{NSLog(A1---%, [NSThread currentThread]); }]; // [operationA addExecutionBlock:^{ // NSLog(A2---%, [NSThread currentThread]); // }]; // // [operationA setCompletionBlock:^{ // NSLog(AAAAA---%, [NSThread currentThread]); // }];NSBlockOperation *operationB [NSBlockOperation blockOperationWithBlock:^{NSLog(B---%, [NSThread currentThread]); }]; NSBlockOperation *operationC [NSBlockOperation blockOperationWithBlock:^{NSLog(C---%, [NSThread currentThread]); }];// 设置依赖 [operationB addDependency:operationA]; [operationC addDependency:operationB];// 3.添加操作到队列中自动异步执行任务 [queue addOperation:operationC]; [queue addOperation:operationA]; [queue addOperation:operationB];} 为了达到优化app性能的需求有时候是需要控制并发线程的数目以及队列中的线程的运行状态 - (void)maxCount { // 1.创建一个队列非主队列 NSOperationQueue *queue [[NSOperationQueue alloc] init]; // 2.设置最大并发(最多同时并发执行3个任务) queue.maxConcurrentOperationCount 3;// 3.添加操作到队列中自动异步执行任务并发 NSBlockOperation *operation1 [NSBlockOperation blockOperationWithBlock:^{NSLog(下载图片1---%, [NSThread currentThread]); }]; NSBlockOperation *operation2 [NSBlockOperation blockOperationWithBlock:^{NSLog(下载图片2---%, [NSThread currentThread]); }]; NSBlockOperation *operation3 [NSBlockOperation blockOperationWithBlock:^{NSLog(下载图片3---%, [NSThread currentThread]); }]; NSBlockOperation *operation4 [NSBlockOperation blockOperationWithBlock:^{NSLog(下载图片4---%, [NSThread currentThread]); }]; NSInvocationOperation *operation5 [[NSInvocationOperation alloc] initWithTarget:self selector:selector(download) object:nil];[queue addOperation:operation1]; [queue addOperation:operation2]; [queue addOperation:operation3]; [queue addOperation:operation4]; [queue addOperation:operation5]; [queue addOperationWithBlock:^{NSLog(下载图片5---%, [NSThread currentThread]); }]; [queue addOperationWithBlock:^{NSLog(下载图片6---%, [NSThread currentThread]); }]; [queue addOperationWithBlock:^{NSLog(下载图片7---%, [NSThread currentThread]); }]; [queue addOperationWithBlock:^{NSLog(下载图片8---%, [NSThread currentThread]); }]; [queue addOperationWithBlock:^{NSLog(下载图片9---%, [NSThread currentThread]); }];[queue cancelAllOperations];} (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // [queue cancelAllOperations]; // 取消队列中的所有任务不可恢复 } (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { // [queue setSuspended:YES]; // 暂停队列中的所有任务 }(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { // [queue setSuspended:NO]; // 恢复队列中的所有任务 }
http://www.pierceye.com/news/125750/

相关文章:

  • 深圳公司网站建设设计网站推广的意义和方法
  • 网站需要哪些费用免费营销型网站模版
  • 如何做购物网站的教程wordpress酷炫插件
  • 建设信用卡网站登录网站建设和微信小程序
  • 邓州企业网站艺术设计方案
  • 广州市住房住建局网站永久免费的云电脑
  • 建设网站后如何上线不用服务器做网站
  • 建站服务论坛国外做外贸哪个网站好些
  • 营销型网站试运营调忧仿别人网站
  • 低价网站制作企业云南网站开发公司
  • 成都市建设厅网站查询十九冶成都建设有限公司网站
  • 建电商网站要多少钱建设绿色食品网站
  • 建行个人网上登录入口优化网站结构一般包括
  • 好看的网站页面WordPress知更鸟主题怎样安装
  • 如何查网站是否备案免费建网站代码
  • 曲沃网站开发新注册的公司怎么做网站
  • 企业网站无线端怎么做塑胶科技东莞网站建设
  • 图片发到哪些网站 seo阜沙网站建设
  • 企业开源建站系统大连百度首页优化
  • 通辽做网站有没有智慧软文发稿平台
  • 网站别人做的我自己怎么续费福州网站建站公司
  • 青岛高端网站开发wordpress修改logo地址
  • 做网站实名认证有什么用青岛网站建设运营
  • 大数据分析网站做汽车保养的网站上
  • 网站开发费用一般是多少怎么建设宣传网站
  • 做网站的背景怎么做ps免费模板网站
  • 为什么要建设应急管理网站sketch做网站
  • 做的网站在百度上搜不出来的宁波关键词优化平台
  • 哪里有手机网站建设公司有道网站收录提交入口
  • 赣州网站建设较好的公司贵州网站建设hsyunso