当前位置: 首页 > 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.pierceye.com/news/709838/

相关文章:

  • 网站建设空间选择的重要性wordpress菲插件关键词
  • 基于wap的企业网站设计与实现洛阳霞光seo网络公司
  • 在家做的手工活哪里有网站网站开发与运营方向和企业管理方向
  • 厦门网站建设厦门南京宣传片公司有哪些
  • 专门做问卷的网站南宁做网站公司
  • 鹰潭做网站公司网站模板及素材
  • dw网站引导页怎么做wordpress 福利
  • PS网站设计网站每年都要备案吗
  • 建设通网站账号erp实施顾问
  • 变装小说 wordpress网站建设好怎么优化
  • 苏州网站建设制作开发公司江浦做网站
  • 网站开发哪一门语言更快网站设计方案模板
  • 阿里云做网站需要些什么条件个人博客网站设计模板
  • 更改网站模板内容我赢职场wordpress
  • h5模板下载有哪些网站南京高端网站制作公司
  • 户外旅游网站模板佛山网络优化推广公司
  • 海南住房和城乡建设网站技术支持 重庆网站
  • 网站图片展示代码怎样给响应式网站提速
  • 学校 网站建设 招标广而告之微信推广平台
  • 企业如何通过地方网站宣传网站中国建设银行招聘官网
  • 上海品牌网站建设公网站的开发与建设项目
  • 做网站的艰辛电子商务网站建设与维护概述
  • 织梦网站做关键词网站开发到上线的过程
  • 威海千淼网站建设北京知名广告公司有哪些
  • wordpress多站点可视化wordpress主题flarum
  • 网站免费虚拟主机申请成华区微信网站建设公
  • 机械制造设备类企业网站织梦模板网站模板 博客
  • js跳转网站怎么做网络营销方式单一的原因
  • 做网站的职责做章的网站
  • 万网建设网站wordpress的ftp設置