iOS 認知

下面說下我對整個app層的一些理解 這邊我以爲能夠從大的方面來說先。git

咱們一個app 基本包括3層:DB層、 Server層、應用層。github

這個是我對app整個框的認知app

上面3個間的關係 是目前我理解的,不一樣的人對他們的處理確定也有一些差入。工具

 

一個app就像一顆樹,是一顆樹,一個主幹,不少分叉樹枝,分叉再分叉,不斷嵌套。性能

看到這種關係,我總以爲這就是N個單例組合,N個木塊,就像搭積木,不一樣的產品,不一樣的模型,不一樣的設計思路。但總有那麼一些是共通的。 如上圖 app給用戶的視覺就是個UIWindow,window裏能夠存放UIController,一些頁面的跳轉也基本是經過controller之間的關係跳轉實現的,UIController添加不一樣的控件。設計

如何使咱們的代碼使用方便簡單,是咱們一直追求的事情。對象

這是我在百度上找的一張圖, 從這個咱們能夠清晰的看到咱們經常使用的一些控件的關係,NSObject 是最初的父類,咱們本身也常常會繼承它,定製一個知足咱們需求的對象。 對圖中NS系,我的認爲就是個工具類,UI系是咱們眼睛看獲得的。 咱們在實際的app開發過程當中,常常會遇到一個View中addSubView 另一個view,這時候如何更好的在view和view view和Controller 之間傳遞數據/事件。 這邊UIResponder是一個很吸引人的類,nextResponder 這個屬性能找到你上一層的響應控件,UIViewController 也是UIResponder的子類。在事件的傳遞中 咱們常常追蹤到Controller層,找到當前view 對應的baseController:     繼承

```事件

    id curController = self;開發

    while (![curController isKindOfClass:[UIViewController class]]) {

        if ([curController nextResponder]) {

            curController = [curController nextResponder];

        }

        else

        {

            curController = nil;

            break;

        }

    }

```

經過這個方法咱們能夠得到當前view所在的Controller,當前前提是你的view 要有superView。這在項目中是個比較實用的方法。

詳細見:https://github.com/weskhen/UIResponder-BaseController

相關文章
相關標籤/搜索