時間可以消滅一切。
上回講到(我是在講武俠故事嗎苞氮,笑哭)埃碱,ViewController的事件(或者我們更一般化地稱為消息),分四層處理:View/API/Store/Route切威。View這塊,視圖本身會由ViewController管理丙号。而視圖的數(shù)據(jù)處理則會單獨扔給對應的ViewModel先朦。
通過四個屬性對象,把原來在ViewController里處理的代碼扔到四個不同地方犬缨。自然地喳魏,相應的類型依賴也被引出到四個不同地方。
這樣可以避免ViewController類型依賴太多遍尺、代碼太多太復雜的問題截酷。
如果這個屬性對象使用指定類型來聲明涮拗,ViewController就必須引入四個類型的依賴乾戏。
有沒有辦法可以連這四個類型都不依賴迂苛?
通過協(xié)議對象 id<protocol>object。
這樣鼓择,我們只需要引入四個協(xié)議就可以了三幻。可以在運行時更換任意遵守協(xié)議的對象來對ViewController的同一事件做不同的處理呐能,這樣就可以減少選擇判斷的代碼念搬。
那,協(xié)議對象的代理對象摆出,在什么地方指定呢朗徊?
初始化ViewController的地方。我們還是會在一個地方引入ViewController偎漫、ViewModel爷恳、APIHandle、StoreHandle象踊、RouteHandle的依賴温亲,然后完成它們的初始化。
因為頁面跳轉(zhuǎn)的時候杯矩,我們總是要指定跳轉(zhuǎn)目標頁面而引入目標ViewController的依賴栈虚,并完成ViewController的初始化。
所以史隆,我們把四個層次的依賴放到RouteHandle里完成魂务。
后記(下面以聊家常為主,沒時間沒興趣的朋友請直接忽略):
經(jīng)過和老婆多次反復討論泌射,目前我們大概已經(jīng)確定確實要把事情往深做头镊。然后就是怎么做的問題。
我老婆很早就想開始思考這個問題魄幕,被我一直壓住相艇。找方法容易的,方向不好定纯陨。
我在群里提了一個想法:我從2013年10月開始做iOS開發(fā)坛芽,到現(xiàn)在已經(jīng)22個月。如果這22個月翼抠,我只看Runtime咙轩,其它一切資料都不看。按我的努力程度阴颖,即使我不敢說精通Runtime活喊,起碼我也絕對敢對外宣布我熟悉Runtime,我也肯定能隨便拉個人就講上三天三夜的Runtime量愧。
而現(xiàn)在的事實是什么呢钾菊?
我除了知道“Runtime可以做一些類型帅矗、數(shù)據(jù)、屬性的動態(tài)綁定”這句話以外煞烫,其它Runtime的一切皆無所知浑此。注意,我只知道這句話滞详。對這句話的具體內(nèi)容也一無所知凛俱。
大家可以看到這里面因為選擇所導致的問題:實力的巨大差異。
為什么會造成這么巨大的差距料饥?
在我看來蒲犬,深還是廣,不是哪個更好的問題岸啡,是生和死的選擇暖哨。
好了,方向確定凰狞,下面是怎么做的問題篇裁。
以Runtime為例。
一般大家都會覺得多少有點難度赡若。但如果我說达布,我用22個月來熟悉它,不但很多人會開始覺得有可能逾冬,甚至會有不少人覺得太容易黍聂。
這里就有一個非常有趣的點:時間可以消滅一切困難。至少是一些我們常見的以為自己無能為力的困難身腻。
比如产还,書,一天看10頁當然難嘀趟。如果是一周看1頁脐区,還難嗎?有了開始的積累她按,后面要提速牛隅,還難嗎?
時間之所以能消滅一切酌泰,關鍵在于“信息疊加”媒佣。
當你對大腦進行足夠的“信息疊加”,大腦就會進化成適合處理這類信息的機器陵刹。
我兒子被公認為在“汽車”上有天賦默伍。但,參與整個實驗過程,我和老婆都非常清楚也糊,這只是因為我們順著他的興趣瘋狂地給他堆各種汽車信息導致的必然結果而已炼蹦。
在大家看來是偶然、幸運的事情显设,我們可以通過“疊加信息”讓它變成必然!
我看完了老羅2個小時的發(fā)布會辛辨。
我覺得捕捂,老羅越來越平靜了。
這種因為在深入優(yōu)化上積累而得到的“平靜的自信”斗搞,非持冈埽可怕。
多少人想毀滅他僻焚,但卻對他這種“找一個點允悦,深入優(yōu)化,再找下一個點”的無敵模式一點辦法都沒有虑啤。
“深入優(yōu)化”隙弛,在你積累還不夠多的時候,別人會覺得你非衬剑可笑全闷,天天吹牛逼,說自己優(yōu)化了這個優(yōu)化了那個萍启,結果連個基本成品都看不到总珠。
但是,當你的“深入優(yōu)化”積累多了一點點的時候勘纯,那些自以為聰明的反你人士局服,就開始有點無可奈何,看來是壓不死你了驳遵。
當你的“深入優(yōu)化”越積越多之后淫奔,對手們就崩潰了,這怎么回事堤结,什么時候強大到這樣啦搏讶。
看看蘋果就知道,對手也可以做個一樣的金表霍殴,前提是媒惕,你也發(fā)明“蘋果金”試試?我不是說你完全沒有可能做到来庭,而是這樣做的成本妒蔚,會讓很多對手都不可能做出努力的決心。