鍍金池/ 問(wèn)答/iOS  網(wǎng)絡(luò)安全/ iOS中,使用GCD和不實(shí)用GCD創(chuàng)建單利有什么區(qū)別以及哪個(gè)更好?

iOS中,使用GCD和不實(shí)用GCD創(chuàng)建單利有什么區(qū)別以及哪個(gè)更好?

如題。創(chuàng)建單利的時(shí)候有多種方式。那么使用GCD和不實(shí)用GCD創(chuàng)建單利有什么區(qū)別以及哪個(gè)更好?

回答
編輯回答
懶豬

GCD 線程安全,還有onceToken參數(shù)保證 gcd里面的代碼在程序的運(yùn)行時(shí)只執(zhí)行一次,除非onceToken重新設(shè)置成0。不使用GCD,你alloc,copy 一個(gè)單例的對(duì)象時(shí),很容易生成一個(gè)新的對(duì)象,如果使用不當(dāng)。

2017年2月26日 13:59
編輯回答
命于你

以前只考慮到線程安全,加了鎖保證更加的安全
因?yàn)榉峙涑跏蓟拇a總是需要一定時(shí)間,哪怕極小,如果這時(shí)還有其他線程同時(shí)或在創(chuàng)建前訪問(wèn),這個(gè)變量由于還沒(méi)有初始地址,于是可能會(huì)出現(xiàn)再創(chuàng)建一次的情況,而gcd不一樣,block可以保證 下一次的訪問(wèn)必須等待前一次結(jié)果執(zhí)行完成,這樣才真正的保證了在每次app運(yùn)行 只執(zhí)行一次

查了下,這篇文章寫(xiě)的更好

2018年9月14日 21:59