iOS controller解藕探究實現——第一次寫部落格

來源:互聯網
上載者:User

標籤:

  大學時曾經做過android的開發,目前的工作是iOS的開發。之前自己記錄東西都是通過自己比較喜歡的筆記類的應用記錄下了。直到前段時一個哥們拉著我註冊了一個部落格。現在終於想明白了,部落格這個東西受眾會稍微廣泛一些,自己寫的比較粗爛的東西可以得到大家的指正,可能有一點點比較好的東西可以給大家提供一個思路,有交流才會有更大的進步嘛。廢話不多說了。

  首先多人開發我還是比較傾向於使用XIB的,因為SB的多人開發並不是很方便。XIB又比純程式碼布局介面更加直觀,雖然有的時候我也會使用Masonry布局,但基本都是業務需要的時候。所以controller的解藕就變的比較重要了,push到下一個下一個controller的時候就不用非得import下一個controller類了,讓多人合作的的時候不用過多的import,當然大量import會加大系統資源的開銷,還會造成後期項目的維護性變差。下面我將結合正在工作項目和自己的心得寫寫。

  我就結合工程的代碼介紹一下吧,文章最後會貼上My Code地址。

  YRouterNavigationController是繼承的系統的UINavigationController。主要的就是在AppDelegate裡面實現把controller儲存到config數組(此數組主要的功能是讓唯一的URL和controller的名字一一對應),以便pop的時候去檢查,並形成統一的風格。設定rootcontroller,push,pop,present等的就不再介紹了(push,pop,present的時候用的NSURL,可能不是很方便,大家可以在我的上面封裝一個方法把str轉換成url就可以啦)。基本上都是對系統方法的一個封裝。我感覺找到解藕的最核心的是OC的runtime有這麼一個方法——NSClassFromString,哈哈

  UIViewController+YRouterUIViewControllerCategory是一個UIViewController的Category。為什麼要使用Category呢?主要是考慮到還有tableviewcontroller等的controller,tableviewcontroller也是uiviewcontroller的一個子類嘛。這樣大家就都具有了本Category的技能了。另外push或者present的時候可以帶一個字典的參數,這個參數是query的dic,其實本質上穿參數還是用的KVC,只不過相當於把controller和參數做了一個綁定,就沒有藕合度那麼高的KVC了。這個穿參的query實際使用到了objc_setAssociatedObject和objc_getAssociatedObject,哈哈沒有接觸過的同學自行google。啊,還有,controller預設設定了leftBarButtonItem(作為pop的返回),如果用不到的時候,請自行設定其為nil。

 

代碼地址:https://coding.net/u/ysk/p/YRouter/git

 

  先寫這麼多吧。這個方案可能還會有很多不足之處,如果你參考了本方案,發現了不足,務必在下面評論告訴我,多謝啦。

  

iOS controller解藕探究實現——第一次寫部落格

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.