ios--小結系列三

來源:互聯網
上載者:User

標籤:

一、用模型取代字典的好處•使用字典的壞處Ø 一般情況下,設定資料和取出資料都使用“字串類型的key”,編寫這些key時,編譯器不會有任何友善提示,需要手敲

dict[@"name"] = @"Jack";

NSString *name = dict[@"name"];

Ø 手敲字串key,key容易寫錯Ø Key如果寫錯了,編譯器不會有任何警告和報錯,造成設錯資料或者取錯資料 •使用模型的好處Ø 所謂模型,其實就是資料模型,專門用來存放資料的對象,用它來表示資料會更加專業Ø 模型設定資料和取出資料都是通過它的屬性,屬性名稱如果寫錯了,編譯器會馬上報錯,因此,保證了資料的正確性Ø 使用模型訪問屬性時,編譯器會提供一系列的提示,提高編碼效率

app.name = @"Jack”;

NSString *name = app.name

二、字典轉模型•字典轉模型的過程最好封裝在模型內部•模型應該提供一個可以傳入字典參數的構造方法Ø - (instancetype)initWithDict:(NSDictionary *)dict;Ø + (instancetype)xxxWithDict:(NSDictionary *)dict;三、instancetype•instancetype在類型表示上,跟id一樣,可以表示任何物件類型•instancetype只能用在傳回值類型上,不能像id一樣用在參數類型上•instancetype比id多一個好處:編譯器會檢測instancetype的真實類型四、Xib檔案的使用•Xib檔案可以用來描述某一塊局部的UI介面•Xib檔案的載入Ø 方法1

NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"MJAppView" owner:nil options:nil];

這個方法會建立xib中的所有對象,並且將對象按順序放到objs數組中

(如果xib如右圖所示,那麼objs數組中依次會有3個對象:1個UIView、1個UIButton、1個UISwitch)

Ø 方法2

bundle參數可以為nil,預設就是main bundle

UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];

NSArray *objs = [nib instantiateWithOwner:nil options:nil];

•在開發階段,面向開發人員的是xib檔案; 當把應用裝到手機上時,xib檔案就會轉為nib檔案五、Xib和storyboard對比•共同點:Ø 都用來描述軟體介面Ø 都用Interface Builder工具來編輯 •不同點Ø Xib是輕量級的,用來描述局部的UI介面Ø Storyboard是重量級的,用來描述整個軟體的多個介面,並且能展示多個介面之間的跳轉關係六、view的封裝•如果一個view內部的子控制項比較多,一般會考慮自訂一個view,把它內部子控制項的建立屏蔽起來,不讓外界關心•外界可以傳入對應的模型資料給view,view拿到模型資料後給內部的子控制項設定對應的資料七、小結

1.Xcode內建標頭檔的路徑

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/Frameworks/UIKit.framework/Headers

2.修改了系統內建標頭檔後,Xcode會報錯

解決方案:刪掉下面檔案夾的緩衝即可(aplle是電腦的使用者名稱)

/Users/aplle/資產庫/Developer/Xcode/DerivedData

或者

/Users/aplle/Library/Developer/Xcode/DerivedData

3.使用xib封裝一個自訂view的步驟

1> 建立一個繼承UIView的自訂view,假設類名叫做(MJAppView)

2> 建立一個MJAppView.xib檔案來描述MJAppView內部的結構

3> 修改UIView的類型為MJAppView真是類型

4> 將內部的子控制項跟MJAppView進行屬性連線

5> MJAppView提供一個模型屬性

6> 重寫模型屬性的set方法,因為在set方法中可以拿到外界傳遞的模型資料

7> 把模型資料拆開,分別設定資料到對應的子控制項中

8> 補充:提供一個建立MJAppView的類方法,將讀取xib檔案的代碼屏蔽起來

 

ios--小結系列三

聯繫我們

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