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

怎么样查中企动力做的网站网络信息公司

怎么样查中企动力做的网站,网络信息公司,网站建设与规划结论,乐清市建设路小学网站讨论#xff1a;在主队列、串行队列和并发队列上异步执行代码块才能见识到 GCD 的真正实力。 要在分派队列上执行异步任务,你必须使用下面这些函数中的其中一个: dispatch_async为了异步执行向分派队列提交一个 Block Object(2 项都通过参数指定) dispatch_async_f为了异步执行… 讨论在主队列、串行队列和并发队列上异步执行代码块才能见识到 GCD 的真正实力。 要在分派队列上执行异步任务,你必须使用下面这些函数中的其中一个: dispatch_async为了异步执行向分派队列提交一个 Block Object(2 项都通过参数指定) dispatch_async_f为了异步执行向分派队列提交一个 C 函数和一个上下文引用(3 项通过参数参数指定)  dispatch_async 和dispatch_sync的区别 dispatch_sync(),同步添加操作。他是等待添加进队列里面的操作完成之后再继续执行。 dispatch_queue_t concurrentQueue dispatch_queue_create(my.concurrent.queue, DISPATCH_QUEUE_CONCURRENT);NSLog(1);dispatch_sync(concurrentQueue, ^(){NSLog(2);[NSThread sleepForTimeInterval:10];NSLog(3);});NSLog(4); 输出 11:36:25.313 GCDSeTest[544:303] 1 11:36:25.313 GCDSeTest[544:303] 2 11:36:30.313 GCDSeTest[544:303] 3//模拟长时间操作 11:36:30.314 GCDSeTest[544:303] 4 dispatch_async ,异步添加进任务队列它不会做任何等待 dispatch_queue_t concurrentQueue dispatch_queue_create(my.concurrent.queue, DISPATCH_QUEUE_CONCURRENT);NSLog(1);dispatch_async(concurrentQueue, ^(){NSLog(2);[NSThread sleepForTimeInterval:5];NSLog(3);});NSLog(4); 输出11:42:43.820 GCDSeTest[568:303] 111:42:43.820 GCDSeTest[568:303] 411:42:43.820 GCDSeTest[568:1003] 211:42:48.821 GCDSeTest[568:1003] 3//模拟长时间操作时间 实例 写一个 iOS APP, 它能从网络的 URL 上下载一个图片。下载完 成之后,APP 应该将图片展示给用户。    1、我们在并发队列上异步的启动一个 block object。 2、在这个 block 中我们使用 dispatch_sync 函数来启动另一个 Block Object,以从 URL 上下载图片。我这样做的目的是想让并发队列中剩余的代码能够等到图片下载完成之后在继续执行。从一个异步代码块上同步下载一个 URL 可以保持这个队列运行同步函数,而不是主线程。当我们从主线程角度来看的话整个运作仍是异步的。我们关心的问题是在下载图片的过程中没有阻塞主线程。 3、图片下载完毕后,为了在 UI 上将图片展示给用户,我们会在主线程上同步执行一个 Block    我们计划的框架 dispatch_queue_t concurrentQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(concurrentQueue, ^{ __block UIImage *image nil; dispatch_sync(concurrentQueue, ^{ /* Download the image here */ }); dispatch_sync(dispatch_get_main_queue(), ^{ /* Show the image to the user here on the main queue*/ }); }); 详细代码为 - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.dispatch_queue_t concurrentQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(concurrentQueue, ^{__block UIImage *image nil;dispatch_sync(concurrentQueue, ^{//开始下载图片NSString *urlString http://a.hiphotos.baidu.com/image/pic/item/eac4b74543a9822677de5a5c8982b9014a90ebaa.jpg;NSURL *url [NSURL URLWithString:urlString];NSURLRequest *request [NSURLRequest requestWithURL:url];NSError *downloadError nil;NSData *imageData [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:downloadError];if (downloadError nil imageData ! nil) {image [UIImage imageWithData:imageData];//获得了图片}else if (downloadError ! nil){NSLog(Error happended : %,downloadError);}else{NSLog(No data could get downloaded from the URL);}});dispatch_sync(dispatch_get_main_queue(), ^{//主线程上展示图片if (image ! nil) {UIImageView *imageView [[UIImageView alloc]initWithFrame:self.view.bounds];[imageView setImage:image];[imageView setContentMode:UIViewContentModeScaleAspectFit];[self.view addSubview:imageView];}else{NSLog(Image isnt downloaded. Nothing to display.);}});}); } 下面我们来看另一个例子 假设我们在磁盘的一个文件内存储了 1000 个随机数字的数组,我们想把这个数组加载到内存,让数字按照升序排列然后展示给用户。 如果我们没有数组,那为什么我们不先创建一个数组然后再进行加载,最后展示出来呢?   下面两个方法帮助我们在设备上找某文件 - (NSString *)fileLocation{//获得文件夹位置NSArray *folders NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//见详解1if ([folders count] 0) {return nil;}//找到了NSString *documentsFolder [folders objectAtIndex:0];//返回文件目录 .../list.txtreturn [documentsFolder stringByAppendingPathComponent:list.txt]; } - (BOOL) hasFileAlreadyBeenCreated{BOOL result NO;NSFileManager *fileManager [[NSFileManager alloc]init];//判断.../list.txt文件是否已经创建if ([fileManager fileExistsAtPath:[self fileLocation]]) {return YES;}return result; } 如果没有我们自己创建一个数组并存入磁盘,然后再从磁盘读出该数组,对该数组里的数进行排序显示: - (void)fixNumbers{dispatch_queue_t concurrentQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(concurrentQueue, ^{NSUInteger numberOfValuesRequired 1000;if ([self hasFileAlreadyBeenCreated] NO) {//如果没有这1000个随机数的数组,我们创建一个dispatch_sync(concurrentQueue, ^{NSMutableArray *arrayOfRandomNumbers [[NSMutableArray alloc]initWithCapacity:numberOfValuesRequired];for (NSUInteger counter 0; counter numberOfValuesRequired; counter) {//unsigned int randomNumber arc4random()%((unsigned int)RAND_MAX 1);unsigned int randomNumber arc4random()%1000;[arrayOfRandomNumbers addObject:[NSNumber numberWithUnsignedInt:randomNumber]];}//然后将这个数组存入磁盘/*BOOL isWrite [arrayOfRandomNumbers writeToFile:[self fileLocation] atomically:YES];NSLog(%d,isWrite);这句代码打印出的是0 没有写入磁盘. 应该是因为arrayOfRandomNumbers是可变数组不能够写入. 要将它转成NSArray*/NSArray *writeArray [NSArray arrayWithArray:arrayOfRandomNumbers];BOOL isWrite [writeArray writeToFile:[self fileLocation] atomically:YES];NSLog(%d,isWrite);});}__block NSMutableArray *randomNumbers nil;//在磁盘中读取这些数并且排序dispatch_sync(concurrentQueue, ^{if ([self hasFileAlreadyBeenCreated]) {//读取randomNumbers [[NSMutableArray alloc]initWithContentsOfFile:[self fileLocation]];NSLog(%,[self fileLocation]);//排序[randomNumbers sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {NSNumber *number1 (NSNumber *)obj1;NSNumber *number2 (NSNumber *)obj2;return [number1 compare:number2];}];}});dispatch_async(dispatch_get_main_queue(), ^{if ([randomNumbers count] 0) {for (int i 0; i randomNumbers.count; i) {NSLog(%d,[(NSNumber *)[randomNumbers objectAtIndex:i] unsignedIntValue]);}}});}); }   详解1:  iOS中NSSearchPathForDirectoriesInDomains()方法的学习: FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);  第一个参数NSSearchPathDirectory directory 在iOS中常用NSDocumentDirectory , NSDocumentationDirectory  ,NSDownloadsDirectory这三个参数.下面是测试结果 NSDocumentDirectory -(NSString *) dataFilePath { NSArray *paths NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);NSString *documentsDirectory[paths objectAtIndex:0];return [documentsDirectory stringByAppendingPathComponent:data.plist];}return value: path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Documents/data.plist NSDocumentationDirectory -(NSString *) dataFilePath {NSArray *paths NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory , NSUserDomainMask, YES); NSString *documentsDirectory[paths objectAtIndex:0];return [documentsDirectory stringByAppendingPathComponent:data.plist ];} return value: path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Library/Documentation/data.plist NSDownloadsDirectory -(NSString *) dataFilePath { NSArray *paths NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES); NSString *documentsDirectory[paths objectAtIndex:0]; return [documentsDirectory stringByAppendingPathComponent:data.plist ];}return value: path:/Users/admin/Library/Application Support/iPhone Simulator/5.0/Applications/4BC5DA66-B3CA-4056-927B-999BC4DBF3CE/Downloads/data.plist   总结: 因为应用是在沙箱sandbox中的在文件读写权限上受到限制只能在几个目录下读写文件 Documents应用中用户数据可以放在这里iTunes备份和恢复的时候会包括此目录tmp存放临时文件iTunes不会备份和恢复此目录此目录下文件可能会在应用退出后删除Library/Caches存放缓存文件iTunes不会备份此目录此目录下文件不会在应用退出删除  转载于:https://www.cnblogs.com/safiri/p/4075992.html
http://wiki.neutronadmin.com/news/348730/

相关文章:

  • 做企业网站需要多久佛山网页设计多少钱
  • 深圳制作网站的公司简介企业查询哪个好用
  • 一个网站多台服务器该怎么跟程序员谈做网站
  • 坪洲网站建设餐饮业网站源码 织梦
  • 子网站怎么建设网站的规划方案
  • 网站开发语言哪几种过年做那个网站能致富
  • 网站推广的英文content微信电影网站怎么做
  • 网站建设预算策划企业网站建设预算表
  • 琼中网站建设网络营销策划流程
  • 网站首页设计注意夜晚很晚视频免费素材网站
  • 安徽网站建设论坛淄博张店外贸建站公司
  • 海洋公司做网站asp服装商城网站源码
  • 网站系统升级需要多久中国加盟网首页
  • 移动端网站如何优化电子商务网站定制
  • 做我韩国连续剧网站关键词推广是指
  • 徐州网站app开发怎么去掉2345网址导航
  • 西部数码里面如何建设自己的网站晋中建设机械网站
  • 做外贸网站需要请外贸文员吗中国外贸订单网
  • 做采集网站赚钱做网站图片路径做缓存吗
  • 营销型网站建设需要有什么功能大唐网站首页
  • 做视频网站要用到的服务器厦门做网站哪家好
  • 黑山网站建设ipad做电影网站
  • ps网站导航怎么做分销系统软件
  • 哈尔滨网站建设哪儿好薇wordpress首页提示
  • 电子商务网站平台建设扬中网站建设机构
  • 佛冈县住房和城乡建设局网站怎么在手机上设计网站
  • 东莞网站建设0769dtwordpress 绿色
  • 一般设计网站页面用什么软件网站建设费用 知乎
  • 购物网站免费模板石家庄官网设计及搭建
  • .net网站开发用的书籍18岁以上站长统计