iOS知識點-P6

知不足者好學纱皆,恥下問者自滿湾趾。-林逋《省心錄》

1、iOS中常用的數據存儲方式有哪些派草?

數據存儲有四種方案:NSUserdefaults搀缠、KeyChain、file近迁、DB
其中艺普,File包括:plist文件、Archive(歸檔)
DB包括:SQLite(常用FMDB鉴竭、微信團隊WCDB)歧譬、CoreData

2、iOS的沙盒目錄結構是怎樣的搏存?

沙盒結構:
1). Application:存放程序源文件瑰步,上架前經過數字簽名,上架后不可修改璧眠。
2). Documents:常用目錄缩焦,iCloud備份目錄,存放數據责静。(這里不能存緩存文件袁滥,否則上架不被通過)
3). Library:
        Caches:存放體積大又不需要備份的數據。(常用的緩存路徑)
        Preference:設置目錄灾螃,iCloud會備份設置信息题翻。
4). tmp:存放臨時文件,不會被備份睦焕,而且這個文件下的數據有可能隨時被清除的可能藐握。

3、iOS多線程技術有哪幾種方式垃喊?

常用:NSThread(OC)猾普、GCD(C語言)、NSOperation(OC)
不常用:pThread(C語言)本谜,pThread的全稱是POSIX threads初家,是線程的 POSIX 標準。

4乌助、GCD 與 NSOperation 的區(qū)別

    GCD 和 NSOperation 都是用于實現多線程:
    GCD 基于C語言的底層API溜在,GCD主要與block結合使用,代碼簡潔高效他托。
    NSOperation 屬于Objective-C類掖肋,是基于GCD更高一層的封裝。復雜任務一般用NSOperation實現赏参。

5志笼、寫出使用GCD方式從子線程回到主線程的方法代碼

dispatch_sync(dispatch_get_main_queue(), ^{ });

6沿盅、如何用GCD同步若干個異步調用?(如根據若干個url異步加載多張圖片纫溃,然后在都下載完成后合成一張整圖)

// 使用Dispatch Group追加block到Global Group Queue,這些block如果全部執(zhí)行完畢腰涧,就會執(zhí)行Main Dispatch Queue中的結束處理的block。
// 創(chuàng)建隊列組
dispatch_group_t group = dispatch_group_create();
// 獲取全局并發(fā)隊列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(group, queue, ^{ /*加載圖片1 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片2 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片3 */ }); 
// 當并發(fā)隊列組中的任務執(zhí)行完畢后才會執(zhí)行這里的代碼
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        // 合并圖片
});

7紊浩、dispatch_barrier_async(柵欄函數)的作用是什么窖铡?

函數定義:dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block);
作用:
    1.在它前面的任務執(zhí)行結束后它才執(zhí)行,它后面的任務要等它執(zhí)行完成后才會開始執(zhí)行坊谁。
    2.避免數據競爭

// 1.創(chuàng)建并發(fā)隊列
dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);
// 2.向隊列中添加任務
dispatch_async(queue, ^{  // 1.2是并行的
    NSLog(@"任務1, %@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
    NSLog(@"任務2, %@",[NSThread currentThread]);
});

dispatch_barrier_async(queue, ^{
    NSLog(@"任務 barrier, %@", [NSThread currentThread]);
});

dispatch_async(queue, ^{   // 這兩個是同時執(zhí)行的
    NSLog(@"任務3, %@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
    NSLog(@"任務4, %@",[NSThread currentThread]);
});

// 輸出結果: 任務1 任務2 ——》 任務 barrier ——》任務3 任務4 
// 其中的任務1與任務2费彼,任務3與任務4 由于是并行處理先后順序不定。

8呜袁、以下代碼運行結果如何敌买?

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"1");
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSLog(@"2");
    });
    NSLog(@"3");
}
// 只輸出:1。(主線程死鎖)
//死鎖原因
//1:dispatch_sync 在等待 block 語句執(zhí)行完成阶界,而 block 語句需要在主線程里執(zhí)行,所以dispatch_sync如果在主線程調用就會造成死鎖
//2:dispatch_sync 是同步的聋庵,本身就會阻塞當前線程膘融,即主線程。而又往主線程里塞進去一個 block祭玉,所以就會發(fā)生死鎖氧映。

9、OC中創(chuàng)建線程的方法是什么脱货?如果在主線程中執(zhí)行代碼岛都,方法是什么?

// 創(chuàng)建線程的方法
- [NSThread detachNewThreadSelector:nil toTarget:nil withObject:nil]
- [self performSelectorInBackground:nil withObject:nil];
- [[NSThread alloc] initWithTarget:nil selector:nil object:nil];
- dispatch_async(dispatch_get_global_queue(0, 0), ^{});
- [[NSOperationQueue new] addOperation:nil];

// 主線程中執(zhí)行代碼的方法
- [self performSelectorOnMainThread:nil withObject:nil waitUntilDone:YES];
- dispatch_async(dispatch_get_main_queue(), ^{});
- [[NSOperationQueue mainQueue] addOperation:nil];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末振峻,一起剝皮案震驚了整個濱河市臼疫,隨后出現的幾起案子,更是在濱河造成了極大的恐慌扣孟,老刑警劉巖烫堤,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異凤价,居然都是意外死亡鸽斟,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門利诺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來富蓄,“玉大人,你說我怎么就攤上這事慢逾×⒈叮” “怎么了灭红?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帐萎。 經常有香客問我比伏,道長,這世上最難降的妖魔是什么疆导? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任赁项,我火速辦了婚禮,結果婚禮上澈段,老公的妹妹穿的比我還像新娘悠菜。我一直安慰自己,他們只是感情好败富,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布悔醋。 她就那樣靜靜地躺著,像睡著了一般兽叮。 火紅的嫁衣襯著肌膚如雪芬骄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天鹦聪,我揣著相機與錄音账阻,去河邊找鬼。 笑死泽本,一個胖子當著我的面吹牛淘太,可吹牛的內容都是我干的。 我是一名探鬼主播规丽,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蒲牧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赌莺?” 一聲冷哼從身側響起冰抢,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雄嚣,沒想到半個月后晒屎,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡缓升,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年鼓鲁,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片港谊。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡骇吭,死狀恐怖,靈堂內的尸體忽然破棺而出歧寺,到底是詐尸還是另有隱情燥狰,我是刑警寧澤棘脐,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站龙致,受9級特大地震影響蛀缝,放射性物質發(fā)生泄漏。R本人自食惡果不足惜目代,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一屈梁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榛了,春花似錦在讶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至战坤,卻和暖如春曙强,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背途茫。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工旗扑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慈省。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像眠菇,于是被迫代替她去往敵國和親边败。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容