和我一起來學iOS(二)iOS中的一些約定、模式與三種回調機制

來源:互聯網
上載者:User
文章目錄
  • 2.iOS中的委託,使用組合代替繼承

在第一節裡,我們瞭解了ObjectC的文法,在第二節裡,在正式動手之前,先要瞭解一些iOS中的基本約定與模式。

 

Foundation.h

我們之所以能夠方便的使用ObjectC中的諸如NSString、NSNumber等類型,是因為在Foundation這個架構中對C語言基本類型進行了封裝,並以對象的形式公開給我們使用。

所以我們在使用前都要#import <Fonduation/Foundation.h>,事實上,XCode會幫我們這麼做。

 

iOS中的各種模式

1.MVC

先說說 通常大家所見的MVC模式
在MVC的教科書定義中,Model採用的是觀察者模式,也就是Model是被觀察者,View是觀察者,Model有任何改變的情況下,View都會接受到通知。
但是在典型Web環境中,View不需要即時的改變,只有用戶端發送request時,View才可能需要改變。
換句話說,只有當我們需要產生一個頁面作為響應返回給用戶端的時候,建立一個View並使用Model才有意義。
所以View就不再直接觀察Model,而是通過Controller來作為中間人。

一個Asp.net mvc的大概流程圖如下,可以看出Controller是相應用戶端請求的入口,當一個請求由用戶端發過來的時候,router選擇合適的Controller執行個體化,再把請求交給相應的action處理。

但是在iOS中,事情又變得不一樣了些,這是因為View類(通常指UIView和它的之類)負責與使用者互動,它們提供資訊並且接受使用者事件
View的邏輯通常委託給Controller處理,但View不應該直接引用Controller。除直接父View和子View外,它們也不應引用其他View。View可以引用Model類,但一般只引用它們正在顯示的特定Model對象。例如,StudentView對象可能顯示一個Student對象。

View負責從使用者接受事件,但不處理它們。當使用者觸碰View時,該View可能提醒一個委託說明它已被觸碰,但它不能執行邏輯或者修改其他View。例如,按下刪除鍵這一事件發生時應該只提示一個委託說明一個刪除鍵已被按下。View不能直接讓Model類刪除資料或者自己從螢幕上刪除資料。這些功能應該由Controller來負責,也就是說View和Model的聯絡應該由Controller來建立。

Controller實現了大部分應用程式特定的邏輯。大多數Controller在“Model”類和“View“類之間起協調作用。例如,UITableViewController協調資料Model和UITableView。有些控制器在Model對象或者View對象之間進行協調。這些控制器的名稱有時以Manager結尾,例如CALayoutManagerCTFontManager。這些通常都是單例。

 

2.iOS中的委託,使用組合代替繼承

使用委託設定物件是策略模式的一種形式。策略模式封裝了一個演算法並且允許你通過附加不同的策略(演算法)對象改變該對象的行為。

委託是一種策略對象,它封裝了決定另一 個對象行為的演算法。例如,一個UITableView的委託實現了一個演算法,該演算法決定UITableView的行高。

結合在MVC中討論的View和Controller的關係,可以由來表現兩者關係,實線是直接引用,虛線是間接引用。間接引用可以通過id來實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.