凡是程式的開發者,應該對程式的架構都不陌生。乙個程式的架構的好壞對這個程式有著非常重要的作用。今天我們來看一下ios開發中用要的兩種主流的程式架構。這個過程中我們主要以例子的形式展開。
我們來看第一種架構:如下圖所示:
這種程式的架構的思路就是在用到哪個介面的時候,把該介面的的標頭檔案包含進來。用導航控制器把這個介面push壓棧,來實現頁面之間的切換。當需要用到主介面的時候,poptoroot就實現了到主介面的切換。
但是這種架構的缺點是什麼呢:
1.我們來分析一下整個程式。因為主介面是導航控制器的根檢視控制器。由於根檢視控制器在導航控制器的棧裡是不能出棧的,這是導航控制器的特性決定的。而在這種架構中主介面又包含了四個介面。在程式的執行過程中或者是存在後台執行的話,主控制器的home頁面太大了,並且一直存在記憶體中執行,會造成記憶體的開銷很大。
2.每當程式重新進入的時候,需要更新主介面中的狀態。例如:當在關於我的介面中退出的時候,下次重新登入的時候,如果不更新主介面的狀態的話。會直接進入關於我的這個介面中。這種需求並不是我們想要的狀態。
下面我們來看第二種架構。
很明顯可以看到,這個架構會更加清析,更加明了。我們來說一下這個程式的原理:這個程式的架構是先通過建立乙個繼承自nsobject物件的主控制器,通過這個主控制器來管理頁面之間的切換。我們都知道乙個程式一般只有乙個window,通過改變window的根檢視控制器來實現不同頁面之間的切換。
同樣的,沒有完美的架構,只有更適合的。我們接下來看看這個架構中存在的優缺點。
1.我們先來說下優點。顯然,這個程式架構的思路很是清楚。在複雜的頁面之間的切換的時候,不需要反覆包含切換頁面的標頭檔案 。在程式的執行過程中,只需要找到清楚的知道到底誰才是window的根檢視控制器就可以實現不同頁面之間的切換。當然這個架構中最主要的工作就是想辦法對主控制器方法的封裝。
2.我們接下來看下這個架構的缺點:這裡沒有了導航控制器,在記憶體中一直存在的就剩下主控制器(mainviewcontroller)了,但是,仔細考慮會發現,這個架構中,會對主控制器管理的其它頁面進行反覆的申請記憶體和銷毀,同樣的主介面包含很多頁面。這樣也會影響程式的執行效率。
所以,綜上,第二種架構一般多用於arc環境中使用。
為了程式的執行效率,一種很好的解決方案就是把主控制器(mainviewcontroller)做成乙個單例的物件,單例的物件在整個程式的執行過程中只有乙個物件,避免了,使用的時候重新申請記憶體造成的不必要的開銷。而其它三個介面一般會把它們做成@property類別。這樣就能保證當重新載入新的頁面的時候先判斷是否在記憶體中。如果在的話就直接取出來就行。
with this 中with的用法及其優缺點
with語句擴充套件乙個語句的作用域鏈。with expression 將給定的expression新增到在statement使用的作用域鏈上。表示式周圍的括號是必需的 j ascript查詢某個未使用命名空間的變數時,會通過作用域鏈來查詢,作用域鏈是跟執行 的context或者包含這個變數的函式有...
Python程式的兩種方式以及他們的優缺點
簡述執行python程式的兩種方式以及他們的優缺點 互動式優點 執行一句執行一句 缺點 關閉即消失 命令列式 優點 一直儲存 缺點 全部寫完才能除錯bug 簡述python垃圾 機制 每個物件都維護乙個引用計數字段,記錄這個物件被引用的次數,如果有新的引用指向物件,物件引用計數就加一,引用被銷毀時,...
mysql的兩種主要引擎
innodb引擎 該引擎在5.5後的mysql資料庫中為預設儲存引擎。innodb引擎提供了對資料庫acid事務的支援。並且還提供了行級鎖和外來鍵的約束。它的設計的目標就是處理大資料容量的資料庫系統。它本身實際上是基於mysql後台的完整的系統。mysql執行的時候,innodb會在記憶體中建立緩衝...