OC屬性關(guān)鍵詞的用法之間的區(qū)別

1.weak與assign的區(qū)別?

在MRC環(huán)境下 使用retain 修飾對(duì)象類型,使用assin實(shí)現(xiàn)基本數(shù)據(jù)類型屈张。

在ARC環(huán)境下剩胁,strong相當(dāng)于retain诉植,weak相當(dāng)于assign,但是weak只能修飾對(duì)象類型昵观,而assign使用修飾基本數(shù)據(jù)類型晾腔。weak是一種弱引用。

assign是指針賦值啊犬,不對(duì)引用計(jì)數(shù)操作灼擂,使用之后如果沒有置為nil,可能就會(huì)產(chǎn)生野指針觉至;而weak一旦不進(jìn)行使用后剔应,永遠(yuǎn)不會(huì)使用了,就不會(huì)產(chǎn)生野指針语御!

2.strong與copy的區(qū)別峻贮?

在定義一個(gè)類property的時(shí)候,為property選擇strong還是copy的時(shí)候需要特別注意应闯,如果property是NSArray或是NSString及其子類的時(shí)候纤控,最好選擇copy屬性修飾,為什么呢碉纺?這時(shí)為了防止賦值給它的可變數(shù)據(jù)船万,如果可變的數(shù)據(jù)發(fā)生了變化刻撒,那么該property也會(huì)發(fā)生變化。

(1) strong對(duì)應(yīng)的setter方法耿导,是將_property先release(_property release)声怔,然后將參數(shù)retain(property retain),最后是_property = property碎节。

(2) copy對(duì)應(yīng)的setter方法捧搞,是將_property先release(_property release),然后拷貝參數(shù)內(nèi)容(property copy)狮荔,創(chuàng)建一塊新的內(nèi)存地址胎撇,最后_property = property

3.多線程GCD的簡(jiǎn)述

GCD是iOS4.0推出的,主要針對(duì)多核cpu做了優(yōu)化殖氏,是c語言的技術(shù)

GCD是將任務(wù)(block)添加到隊(duì)列(串行/并行/全局/主隊(duì)列)并且以同步/異步的方式執(zhí)行任務(wù)的函數(shù)晚树,任務(wù)的取出遵循隊(duì)列FIFO原則:先進(jìn)先出,后進(jìn)后出

GCD提供了一些NSOperation不具備的功能

一次性執(zhí)行:可以保證某一段代碼在程序運(yùn)行的過程中只被執(zhí)行一次雅采,一次性執(zhí)行是線程安全的爵憎,在多線程環(huán)境下也是只執(zhí)行一次,應(yīng)用場(chǎng)景:設(shè)計(jì)單例模式

延遲執(zhí)行:即實(shí)現(xiàn)等待多長(zhǎng)時(shí)間后在哪個(gè)隊(duì)列中執(zhí)行什么代碼塊

調(diào)度組:監(jiān)聽一組異步任務(wù)執(zhí)行結(jié)束之后婚瓜,我們能夠得到統(tǒng)一的通知宝鼓,注意:在其調(diào)度組內(nèi)的任務(wù)執(zhí)行完畢后執(zhí)行后面的“刷新主界面”與“玩完”之間的執(zhí)行沒有先后順序

(2)NSOperation

NSOperation是iOS2.0推出的,iOS4.0之后重寫了NSOperation

NSOperation將操作(異步任務(wù))添加到隊(duì)列(并發(fā)隊(duì)列)就會(huì)執(zhí)行制定操作的方法

NSOperation里提供的方便操作

最大并發(fā)數(shù)

隊(duì)列的暫停/繼續(xù)

取消隊(duì)列中所有的操作

指定操作之間的依賴關(guān)系(GCD可以用同步實(shí)現(xiàn)巴刻,但是比較麻煩)

同步和異步?jīng)Q定了要不要開啟新的線程(同步不開愚铡,異步開)

同步:在當(dāng)前線程中執(zhí)行任務(wù),不具備開啟新線程的能力

異步:在新線程中執(zhí)行任務(wù)胡陪,具備開啟新線程的能力

串行和并發(fā)決定了任務(wù)的執(zhí)行方式

并發(fā):多個(gè)任務(wù)并發(fā)(同時(shí))執(zhí)行

串行:一個(gè)任務(wù)執(zhí)行完畢后沥寥,再執(zhí)行下一個(gè)任務(wù)

當(dāng)任務(wù)是異步的時(shí)候,隊(duì)列決定了開啟多少條線程

串行隊(duì)列:只開啟一條

并發(fā)隊(duì)列:可以開啟多條

主隊(duì)列特點(diǎn):主隊(duì)列中的任務(wù)柠座,只有主線程在空閑的時(shí)候才會(huì)調(diào)度任務(wù)執(zhí)行

主隊(duì)列又叫全局串行隊(duì)列邑雅,程序啟動(dòng)的時(shí)候就創(chuàng)建了主隊(duì)列,在使用的不需要?jiǎng)?chuàng)建妈经,直接GET淮野。主隊(duì)列中的任務(wù)是要在主線程執(zhí)行的。

主隊(duì)列吹泡,異步任務(wù)

不開線程录煤,同步執(zhí)行

主隊(duì)列,同步執(zhí)行

程序執(zhí)行不出來(死鎖)

死鎖的原因荞胡,當(dāng)程序執(zhí)行到下面這段代碼的時(shí)候

主隊(duì)列:如果主線程正在執(zhí)行代碼,就不調(diào)度任務(wù)

同步執(zhí)行:如果第一個(gè)任務(wù)沒有執(zhí)行了嚎,就繼續(xù)等待第一個(gè)任務(wù)執(zhí)行完成泪漂,再執(zhí)行下一個(gè)任務(wù)廊营,此時(shí)互相等待,程序無法往下執(zhí)行(死鎖)

主隊(duì)列和串行隊(duì)列的區(qū)別

串行隊(duì)列:必須等待一個(gè)任務(wù)執(zhí)行完成萝勤,再調(diào)度另一個(gè)任務(wù)

主隊(duì)列:以先進(jìn)先出調(diào)度任務(wù)露筒,如果主線程上有代碼執(zhí)行,主隊(duì)列不會(huì)調(diào)度任務(wù)

主隊(duì)列敌卓,同步執(zhí)行 ->放入異步執(zhí)行解決死鎖

全局隊(duì)列本質(zhì)就是并發(fā)隊(duì)列

全局隊(duì)列和并發(fā)隊(duì)列的區(qū)別

并發(fā)隊(duì)列有名稱慎式,可以跟蹤錯(cuò)誤,全局隊(duì)列沒有

全局隊(duì)列在ARC中不需要考慮釋放內(nèi)存趟径,

并發(fā)隊(duì)列在MRC中需要手動(dòng)釋放內(nèi)存瘪吏,因?yàn)椴l(fā)隊(duì)列是creat創(chuàng)建出來的 在MRC見到creat就要release,全局隊(duì)列不需要release

一般我們使用全局隊(duì)列蜗巧,因?yàn)槭褂闷饋砀雍?jiǎn)單

《3.》綜合比較其各自使用范圍如下

性能1.GCD更接近底層掌眠,而NSOperationQueue則更高級(jí)抽象,所以GCD在追求性能的底層操作來說幕屹,是數(shù)度最快的蓝丙。著取決于使用instruments進(jìn)行代碼性能分析,如果有必要的話

2望拖,從異步操作之間的事務(wù)性渺尘,順序性,依賴關(guān)系说敏。GCD需要自己寫更多的代碼來實(shí)現(xiàn)鸥跟,而NSOperaitonQueue已經(jīng)內(nèi)建了這些支持

3.如果異步操作的過程需要更多的被交互和UI呈現(xiàn)出來,NSOperationQueue會(huì)是一個(gè)更好的選擇像云。底層代碼中锌雀,任務(wù)之間不太互相依賴,而需要更高的并發(fā)能力迅诬,GCD 則更有優(yōu)勢(shì)腋逆!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侈贷,隨后出現(xiàn)的幾起案子惩歉,更是在濱河造成了極大的恐慌,老刑警劉巖俏蛮,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撑蚌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搏屑,警方通過查閱死者的電腦和手機(jī)争涌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辣恋,“玉大人亮垫,你說我怎么就攤上這事模软。” “怎么了饮潦?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵燃异,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我继蜡,道長(zhǎng)回俐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任稀并,我火速辦了婚禮仅颇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稻轨。我一直安慰自己灵莲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布殴俱。 她就那樣靜靜地躺著政冻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪线欲。 梳的紋絲不亂的頭發(fā)上明场,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音李丰,去河邊找鬼苦锨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趴泌,可吹牛的內(nèi)容都是我干的舟舒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼嗜憔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秃励!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吉捶,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤夺鲜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呐舔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體币励,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年珊拼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了食呻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搁进,靈堂內(nèi)的尸體忽然破棺而出浪感,到底是詐尸還是另有隱情,我是刑警寧澤饼问,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站揭斧,受9級(jí)特大地震影響莱革,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜讹开,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一盅视、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旦万,春花似錦闹击、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淆两,卻和暖如春断箫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秋冰。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來泰國打工仲义, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剑勾。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓埃撵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親虽另。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暂刘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容