当前位置: 首页 > 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.zqtcl.cn/news/125750/

相关文章:

  • 中山网页网站设计模板自己做的网站怎么让别人看见
  • 建设装饰网站出口跨境电商平台
  • 陕西网站建设公司排名WordPress图片生成文章
  • t恤定制网站wordpress 分类 seo
  • 万网网站空间多少钱一年做哪些网站流量最大
  • seo网站优化服务网站开发电脑
  • 宿迁怎样建设网站wordpress 分类目录 标签
  • 惠州双语网站建设费用seo搜索工具栏
  • 做ppt会去什么网站找图网页制作与网站建设试题
  • 如何用ai给网站做logo宝安网站制作公司
  • sem是什么职业岗位单页式网站 seo
  • 做网站用什么版本系统国外有哪些设计网站推荐
  • dz论坛怎么做视频网站吗哪些公司是wordpress
  • 在微信怎样搞做微视频网站商城小程序模板源码完整版
  • h5跟传统网站有啥区别读取wordpress最新文章
  • 网站推广120最超值的网站建设
  • 移动网站制作公司如何开公司做网站
  • 网站建设 青海试题wordpress的特点
  • 源码如何做网站宽甸县建设局网站
  • 用dw做的网页怎么连到网站上企业网站备案资料填写单
  • 中文 网站模板企业怎么建设网站
  • 建设户外腰包网站哪个网站注册域名好
  • 六安网站建设价格小学生编程网课前十名
  • 绵阳网站建设信赖辉煌wordpress多账号权限
  • 网站外链快速建设网站维护要学多久
  • 做网站都是用ps吗郑州网站设计培训
  • wordpress 多站点教程厦门做网站维护的公司
  • 婚纱网站建设需求分析wordpress js图片
  • seo网站怎么优化有哪些企业网站平台
  • 响应式中文网站欣赏wordpress 带分页的主题