在開發(fā)中我們也不能太依賴于某個(gè)框架秘噪,否則這個(gè)框架不更新了魁索,導(dǎo)致項(xiàng)目后期沒辦法維護(hù)融撞,比如之前Facebook提供的Three20框架,在當(dāng)時(shí)也是神器粗蔚,但是后來(lái)不更新了懦铺,也就沒什么人用了。因此我感覺學(xué)習(xí)一個(gè)框架支鸡,還是有必要了解它的編程思想冬念。
編程思想的由來(lái):在開發(fā)中我們會(huì)遇見各種各樣的需求,經(jīng)常會(huì)思考如何快速的完成這些需求牧挣,這樣就會(huì)慢慢形成快速完成這些需求的思想急前。
先簡(jiǎn)單介紹下目前咱們已知的編程思想。
3.1面向過(guò)程:處理事情以過(guò)程為核心瀑构,一步一步的實(shí)現(xiàn)裆针。
3.2面向?qū)ο螅喝f(wàn)物皆對(duì)象
3.3鏈?zhǔn)骄幊趟枷耄菏菍⒍鄠€(gè)操作(多行代碼)通過(guò)點(diǎn)號(hào)(.)鏈接在一起成為一句代碼,使代碼可讀性好。a(1).b(2).c(3)
鏈?zhǔn)骄幊烫攸c(diǎn):方法的返回值是block,block必須有返回值(本身對(duì)象)寺晌,block參數(shù)(需要操作的值)
代表:masonry框架世吨。
練習(xí)一:模仿masonry,寫一個(gè)加法計(jì)算器呻征,練習(xí)鏈?zhǔn)骄幊趟枷搿?/p>
3.4響應(yīng)式編程思想:不需要考慮調(diào)用順序耘婚,只需要知道考慮結(jié)果,類似于蝴蝶效應(yīng)陆赋,產(chǎn)生一個(gè)事件沐祷,會(huì)影響很多東西,這些事件像流一樣的傳播出去攒岛,然后影響結(jié)果赖临,借用面向?qū)ο蟮囊痪湓挘f(wàn)物皆是流灾锯。
代表:KVO運(yùn)用兢榨。
KVO的本質(zhì)就是監(jiān)聽一個(gè)對(duì)象有沒有調(diào)用set方法。
做法:重寫這個(gè)方法(分類或子類中重寫)
1)分類方法不足:會(huì)將類中的方法覆蓋,沒辦法在類中重新賦值吵聪,做一些處理誊册。
2)子類重寫,重寫setName,在內(nèi)部恢復(fù)父類做法,通知觀察者暖璧;
監(jiān)聽方法本質(zhì):并不需要修改方法的實(shí)現(xiàn),僅僅想判斷下有沒有調(diào)用
練習(xí)二:KVO底層實(shí)現(xiàn)。
isa指針的變化:
相關(guān)代碼:
3.5函數(shù)式編程思想:是把操作盡量寫成一系列嵌套的函數(shù)或者方法調(diào)用君旦。
函數(shù)式編程本質(zhì):就是往方法中傳入Block,方法中嵌套Block調(diào)用澎办,把代碼聚合起來(lái)管理
函數(shù)式編程特點(diǎn):每個(gè)方法必須有返回值(本身對(duì)象),把函數(shù)或者Block當(dāng)做參數(shù),block參數(shù)(需要操作的值)block返回值(操作結(jié)果)
代表:ReactiveCocoa。
練習(xí)三:用函數(shù)式編程實(shí)現(xiàn)金砍,寫一個(gè)加法計(jì)算器,并且加法計(jì)算器自帶判斷是否等于某個(gè)值.