iOS-KVO-GCD-Block-Delegate-單例-NSUserDefaults

這里集成了以上所有的小例子,幫助理解常熙,先上demo:GitHub - paradisery/iOS-KVO-GCD-Block-Delegate-shareInstance-NSUserDefaults-Demo: KVO-GCD-Block-Delegate-單例-NSUserDefaults傳值 詳解

KVO: ?

在MVC設(shè)計(jì)架構(gòu)下的項(xiàng)目,KVO機(jī)制很適合實(shí)現(xiàn)mode模型和view視圖之間的通訊弥咪。

代碼中络它,在模型類A創(chuàng)建屬性數(shù)據(jù),在控制器中創(chuàng)建觀察者茬腿,一旦屬性數(shù)據(jù)發(fā)生改變就收到觀察者收到通知呼奢,通過(guò)KVO再在控制器使用回調(diào)方法處理實(shí)現(xiàn)視圖B的更新;

KVO 的實(shí)現(xiàn)依賴于 Objective-C 強(qiáng)大的 Runtime切平,key-value observing:監(jiān)聽某個(gè)對(duì)象的某個(gè)屬性發(fā)生變化握础,當(dāng)發(fā)生變化,觀察者會(huì)調(diào)用相應(yīng)函數(shù)悴品,當(dāng)某個(gè)類的屬性對(duì)象第一次被觀察時(shí)禀综,系統(tǒng)就會(huì)在運(yùn)行期動(dòng)態(tài)地創(chuàng)建該類的一個(gè)派生類简烘,在這個(gè)派生類中重寫基類中任何被觀察屬性的setter 方法。派生類在被重寫的setter方法內(nèi)實(shí)現(xiàn)真正的通知機(jī)制定枷。

GCD和NSOpertaionQueue:

關(guān)系:①:先搞清兩者的關(guān)系,NSOpertaionQueue用GCD構(gòu)建封裝的孤澎,是GCD的高級(jí)抽象!

②:GCD僅僅支持FIFO隊(duì)列,而NSOperationQueue中的隊(duì)列可以被重新設(shè)置優(yōu)先級(jí)欠窒,從而實(shí)現(xiàn)不同操作的執(zhí)行順序調(diào)整覆旭。GCD不支持異步操作之間的依賴關(guān)系設(shè)置。如果某個(gè)操作的依賴另一個(gè)操作的數(shù)據(jù)(生產(chǎn)者-消費(fèi)者模型是其中之一)岖妄,使用NSOperationQueue能夠按照正確的順序執(zhí)行操作型将。GCD則沒有內(nèi)建的依賴關(guān)系支持。

③:NSOperationQueue支持KVO衣吠,意味著我們可以觀察任務(wù)的執(zhí)行狀態(tài)茶敏。

了解以上不同,我們可以從以下角度來(lái)回答

性能:①:GCD更接近底層缚俏,而NSOperationQueue則更高級(jí)抽象惊搏,所以GCD在追求性能的底層操作來(lái)說(shuō),是速度最快的忧换。這取決于使用Instruments進(jìn)行代碼性能分析恬惯,如有必要的話

②:從異步操作之間的事務(wù)性,順序行亚茬,依賴關(guān)系酪耳。GCD需要自己寫更多的代碼來(lái)實(shí)現(xiàn),而NSOperationQueue已經(jīng)內(nèi)建了這些支持

③:如果異步操作的過(guò)程需要更多的被交互和UI呈現(xiàn)出來(lái)刹缝,NSOperationQueue會(huì)是一個(gè)更好的選擇碗暗。底層代碼中,任務(wù)之間不太互相依賴梢夯,而需要更高的并發(fā)能力言疗,GCD則更有優(yōu)勢(shì)

“在大概97%的時(shí)間里,我們應(yīng)該忘記微小的性能提升颂砸。過(guò)早優(yōu)化是萬(wàn)惡之源噪奄。”只有Instruments顯示有真正的性能提升時(shí)才有必要用低級(jí)的GCD人乓。

Block:

block的核心思想:比如我打你一巴掌(發(fā)送消息),然后你說(shuō)你打到我了(響應(yīng)消息),那我心里就爽了(回調(diào)block).

block的內(nèi)存空間是另外開辟的勤篮,所以不會(huì)立馬執(zhí)行block內(nèi)的代碼,block就是代碼塊,什么時(shí)候調(diào)用色罚,什么時(shí)候才響應(yīng)碰缔。

注意: __weak typeof(self) weakSelf =self;防止循環(huán)引用。

Delegate:

代理就是雇傭A方和被雇傭B方定一個(gè)協(xié)議:“類名+Delegate”保屯,然后有協(xié)議方法:”代理傳值方法“手负,讓B用協(xié)議方法傳個(gè)值涤垫,A方實(shí)現(xiàn)代理方法,拿到值竟终。這個(gè)代理就完成了蝠猬。

單例:

簡(jiǎn)單的說(shuō),單例是一個(gè)特殊的實(shí)例统捶,在單例所屬的類中只存在單例這么一個(gè)實(shí)例榆芦,并且單例類似全局變量,在系統(tǒng)任意地方都能訪問(wèn)單例喘鸟,就是兩種寫法:

NSUserDefaults:

NSUserDefaults適合存儲(chǔ)輕量級(jí)的本地?cái)?shù)據(jù)匆绣,一些簡(jiǎn)單的數(shù)據(jù)(NSString類型的)例如密碼,網(wǎng)址等什黑,NSUserDefaults肯定是首選崎淳,但是如果我們自定義了一個(gè)對(duì)象,對(duì)象保存的是一些信息愕把,這時(shí)候就不能直接存儲(chǔ)到NSUserDefaults了拣凹,這個(gè)就是把值存在全局本地,在任意地方都可以調(diào)用恨豁,注意的就是鍵值嚣镜,和增刪。


后續(xù)還會(huì)往更新橘蜜,都是根據(jù)自己的理解編寫菊匿,有不對(duì)的地方歡迎指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末计福,一起剝皮案震驚了整個(gè)濱河市跌捆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌象颖,老刑警劉巖疹蛉,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異力麸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)育韩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門克蚂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人筋讨,你說(shuō)我怎么就攤上這事埃叭。” “怎么了悉罕?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵赤屋,是天一觀的道長(zhǎng)立镶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)类早,這世上最難降的妖魔是什么媚媒? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮涩僻,結(jié)果婚禮上缭召,老公的妹妹穿的比我還像新娘。我一直安慰自己逆日,他們只是感情好嵌巷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著室抽,像睡著了一般搪哪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坪圾,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天晓折,我揣著相機(jī)與錄音,去河邊找鬼神年。 笑死已维,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的已日。 我是一名探鬼主播垛耳,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼飘千!你這毒婦竟也來(lái)了堂鲜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤护奈,失蹤者是張志新(化名)和其女友劉穎缔莲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霉旗,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痴奏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厌秒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片读拆。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸵闪,靈堂內(nèi)的尸體忽然破棺而出檐晕,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布辟灰,位于F島的核電站个榕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芥喇。R本人自食惡果不足惜西采,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乃坤。 院中可真熱鬧苛让,春花似錦、人聲如沸湿诊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厅须。三九已至仿畸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朗和,已是汗流浹背错沽。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眶拉,地道東北人千埃。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忆植,于是被迫代替她去往敵國(guó)和親放可。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,128評(píng)論 29 470
  • 1. 父類實(shí)現(xiàn)深拷貝時(shí)朝刊,子類如何實(shí)現(xiàn)深度拷貝耀里。父類沒有實(shí)現(xiàn)深拷貝時(shí),子類如何實(shí)現(xiàn)深度拷貝拾氓。 1.1 深拷貝同淺拷貝...
    iYeso閱讀 1,887評(píng)論 0 13
  • 父類實(shí)現(xiàn)深拷貝時(shí)冯挎,子類如何實(shí)現(xiàn)深度拷貝。父類沒有實(shí)現(xiàn)深拷貝時(shí)咙鞍,子類如何實(shí)現(xiàn)深度拷貝房官。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 995評(píng)論 1 7
  • 1.屬性readwrite,readonly续滋,assign易阳,retain,copy吃粒,nonatomic 各是什么作...
    曾令偉閱讀 1,046評(píng)論 0 10
  • 這是最后一次的新精英培訓(xùn)營(yíng)培訓(xùn)了,在本來(lái)積蓄就不多的情況下拒课,還花了一大筆錢來(lái)投資職業(yè)規(guī)劃的學(xué)習(xí)徐勃,這本身對(duì)于我這個(gè)小...
    蝸牛奕閱讀 409評(píng)論 0 1