自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GCD實(shí)戰(zhàn)一:使用串行隊(duì)列實(shí)現(xiàn)簡(jiǎn)單的預(yù)加載

移動(dòng)開(kāi)發(fā) iOS
本文為大家介紹了如何使用串行隊(duì)列實(shí)現(xiàn)簡(jiǎn)單的預(yù)加載,思路是使用gcd創(chuàng)建串行隊(duì)列,然后在此隊(duì)列中先后執(zhí)行兩個(gè)任務(wù):1.預(yù)加載一個(gè)viewController 2.將這個(gè)viewController推入。文章最后提供了源碼下載,希望對(duì)各位有所幫助。

[[77418]]

本文為大家介紹了如何使用串行隊(duì)列實(shí)現(xiàn)簡(jiǎn)單的預(yù)加載,思路是使用gcd創(chuàng)建串行隊(duì)列,然后在此隊(duì)列中先后執(zhí)行兩個(gè)任務(wù):1.預(yù)加載一個(gè)viewController 2.將這個(gè)viewController推入。文章最后提供了源碼下載,希望對(duì)各位有所幫助。

其主要思路是使用gcd創(chuàng)建串行隊(duì)列,然后在此隊(duì)列中先后執(zhí)行兩個(gè)任務(wù):1.預(yù)加載一個(gè)viewController 2.將這個(gè)viewController推入

代碼如下:

  1. @implementation DWAppDelegate 
  2.     dispatch_queue_t _serialQueue; 
  3.     UINavigationController *_navController; 
  4.  
  5. - (dispatch_queue_t)serialQueue 
  6.     if (!_serialQueue) { 
  7.         _serialQueue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);//創(chuàng)建串行隊(duì)列 
  8.     } 
  9.     return _serialQueue; 
  10.  
  11. - (void)prepareViewController 
  12.     dispatch_async([self serialQueue], ^{//把block中的任務(wù)放入串行隊(duì)列中執(zhí)行,這是第一個(gè)任務(wù) 
  13.         self.viewController = [[[DWViewController alloc] init] autorelease]; 
  14.         sleep(2);//假裝這個(gè)viewController創(chuàng)建起來(lái)很花時(shí)間。。其實(shí)view都還沒(méi)加載,根本不花時(shí)間。 
  15.         NSLog(@"prepared"); 
  16.     }); 
  17.  
  18. - (void)goToViewController 
  19.     dispatch_async([self serialQueue], ^{//第二個(gè)任務(wù),推入viewController 
  20.         NSLog(@"go"); 
  21.         dispatch_async(dispatch_get_main_queue(), ^{//涉及UI更新的操作,放入主線程中 
  22.             [_navController pushViewController:self.viewController animated:YES]; 
  23.         }); 
  24.     }); 
  25.  
  26. - (void)dealloc 
  27.     dispatch_release(_serialQueue); 
  28.     [_navController release]; 
  29.     [_window release]; 
  30.     [_viewController release]; 
  31.     [super dealloc]; 
  32.  
  33. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
  34.     [self prepareViewController]; 
  35.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
  36.     // Override point for customization after application launch. 
  37.     DWViewController *viewController = [[[DWViewController alloc] initWithNibName:@"DWViewController" bundle:nil] autorelease]; 
  38.     viewController.view.backgroundColor = [UIColor blueColor]; 
  39.     _navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
  40.     self.window.rootViewController = _navController; 
  41.     [self goToViewController]; 
  42.     [self.window makeKeyAndVisible]; 
  43.     return YES; 
  44. }

工程下載:

http://down.51cto.com/data/872207

責(zé)任編輯:閆佳明 來(lái)源: dreamingwish
相關(guān)推薦

2013-07-15 16:55:54

iOS多線程GCD實(shí)戰(zhàn)資源競(jìng)爭(zhēng)

2013-07-15 15:23:03

iOS多線程GCD

2021-09-08 22:28:13

前端Css3動(dòng)畫(huà)

2017-04-27 10:07:52

框架設(shè)計(jì)實(shí)現(xiàn)

2024-06-17 08:26:23

性能ViewPager頁(yè)面

2011-03-17 10:37:07

JavaScript

2009-04-11 15:12:24

Windows CE串行通信GPS

2011-01-17 19:35:04

javascriptjqueryweb

2022-01-21 19:22:45

RedisList命令

2022-01-15 07:20:18

Redis List 消息隊(duì)列

2024-03-22 12:10:39

Redis消息隊(duì)列數(shù)據(jù)庫(kù)

2021-04-28 10:01:00

JSCSS進(jìn)度條

2021-11-02 15:35:01

JavaScriptCSS開(kāi)發(fā)

2021-03-01 23:31:48

隊(duì)列實(shí)現(xiàn)棧存儲(chǔ)

2022-01-04 16:50:47

JavaScript圖片網(wǎng)站

2011-08-05 16:41:48

iOS 隊(duì)列 內(nèi)存

2023-09-12 14:58:00

Redis

2019-04-03 10:50:09

Javascript區(qū)塊鏈技術(shù)

2015-03-10 13:55:31

JavaScript預(yù)解析原理及實(shí)現(xiàn)

2021-08-04 09:51:02

代理設(shè)計(jì)模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)