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

在iOS中掛起主線程

移動開發(fā) iOS
通常而言,ios中涉及IO的操作是多線程的,而不會在主線程中完成,這是為了避免耗時過長IO操作卡住主線程。

但某些時候,我們希望讓主線程等待IO操作完成——例如主線程創(chuàng)建了一個文件夾后,等待完成,再往文件夾中創(chuàng)建文件。

NSObject類有一個方法performSelectorOnMainThread:withObject:waitUntilDone可以讓主線程掛起,但selector至多只能帶一個可傳參數(shù),這時需要用到NSInvocation類來解決這個問題。

代碼如下: 

- (void)createRecordDirectoryBlockingMainThread

{

NSFileManager *dfm = [NSFileManager defaultManager];

SEL sel = @selector(createDirectoryAtPath:

withIntermediateDirectories:

attributes:

error:);

NSMethodSignature *sig = [dfm methodSignatureForSelector:sel];

//方法的簽名,實際上包含了目標,選擇器,及各參數(shù)的類型信息,但并不含有目標和方法的內(nèi)存地址。這些信息是為了在函數(shù)壓棧時準確得到各參數(shù)的值

NSInvocation *ivct = [NSInvocation invocationWithMethodSignature:sig];

[ivct setTarget:dfm];

[ivct setSelector:sel]; //提供方法的內(nèi)存地址

FilePathManager *fpm = [FilePathManager sharedInstance];

NSString *path = fpm.programRecordDirectoryPath;

[ivct setArgument:&path atIndex:2]; //參數(shù)在數(shù)組中的索引從2開始

[ivct setArgument:(void *)&BOOL_NO atIndex:3]; //(void *)的類型轉(zhuǎn)換可以避免編譯器警告

[ivct setArgument:(void *)&ID_NIL atIndex:4];

[ivct setArgument:(void *)&VOID_NULL atIndex:5];

[ivct performSelectorOnMainThread:@selector(invoke)

withObject:nil

waitUntilDone:YES]; //掛起主線程

}

【編輯推薦】

  1. PhoneGap Xcode iOS入門教程
  2. iOS 5.1的Web存儲方式改變會影響到Web App嗎?
  3. Cocos2d-x跨Android&iOS平臺開發(fā)入門
責任編輯:冰凝兒 來源: 博客園
相關(guān)推薦

2014-07-21 10:03:56

2017-03-13 10:41:33

iOSUI操作主線程

2011-06-22 15:42:18

QT 信號

2010-02-24 11:19:00

Python主線程

2010-02-02 16:47:12

Python主線程

2010-02-01 17:33:24

Python主線程

2010-03-01 13:28:44

Python子線程

2010-03-15 18:34:08

Java多線程

2009-07-16 08:53:03

Swing任務(wù)Swing線程

2010-03-10 19:34:45

Python主線程

2013-03-27 10:32:53

iOS多線程原理runloop介紹GCD

2010-02-26 15:37:11

Python主線程

2015-03-09 09:44:35

GmailiOS

2011-04-02 13:57:05

Sql Server

2014-04-23 13:30:23

類簇iOS開發(fā)

2015-08-07 10:40:31

UI主線程

2010-03-03 17:52:31

Python線程同步

2011-08-10 10:18:22

iPhone多線程線程

2023-12-14 15:05:08

volatile代碼C++

2025-04-28 08:20:40

ndroid主線程線程
點贊
收藏

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