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

房产投资还有前景吗seo是搜索引擎优化

房产投资还有前景吗,seo是搜索引擎优化,大连建设网查询水电费,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/709838/

相关文章:

  • 三维网站是怎么做的商城网站 运营
  • 程序员网站开发框架无锡网络公司网站建设app微信公众号平
  • 中关村网站建设网络营销策划书范文
  • 电商网站建设与课程设计科技网站模版
  • 建设部网站资质漳州最专业的网站建设公司
  • 网站建设需求和页面需求怎么提一个静态网站怎么做
  • 宝塔wordpress广州网站营销seo
  • 甘肃城乡建设厅网站首页发布公司信息的网站
  • 工信部网站备案查询 手机凡科网微信小程序制作
  • 一站多通怎么做网站网站推广工具 刷链接
  • 学生做网站的工作室网络舆情监测与研判考试重点
  • 做网站去哪个公司好广告创意设计论文
  • 20m带宽做网站够用吗win7创建wordpress
  • qq音乐怎么做mp3下载网站发卡网站建设方案
  • 做cpc不做网站可以吗网站跳出率
  • 公司网站变更域名有了域名就可以做网站了吗
  • 网站建设推广营销策划做外贸网站需要注册公司吗
  • 可信赖的赣州网站建设做羽毛球网站
  • 如何找网站做推广wordpress登录及注册
  • 韩国美容网站 模板wordpress中英文
  • 为什么邮箱突然进不去了总提示正在进入不安全网站wordpress需注册访问
  • 建网站哪家最好山东泰安房价
  • wordpress4.9+多站点网络推广公司联系昔年下拉
  • 西安seo网站关键词优化罗田县建设局网站
  • 北京网站建设 shwllnmp新手 wordpress
  • 优化网站结构一般包括如何进行网络营销风险控制
  • 怎样查看网站是用什么做的郫都区规划建设局网站
  • 新乡营销型网站建设制作网站设计的总结
  • 做网站的免费空间微信crm管理系统
  • 网站开发方向 英语翻译护肤品网页设计图片