標籤:
@property 參數
copy:NSString;
strong:一般對象
weak:UI控制項
assign:基礎資料型別 (Elementary Data Type)
instancetype
instancetype在類型表示上,跟id一樣,可以表示任何物件類型
instancetype只能用在傳回值類型上,不能像id一樣用在參數類型上
instancetype比id多一個好處:編譯器會檢測instancetype的真實類型
字典轉模型:
使用字典的壞處
一般情況下,設定資料和取出資料都使用“字串類型的key”,編寫這些key時,編譯器不會有任何友善提示,需要手敲
dict[@"name"] = @"Jack";
NSString *name = dict[@"name"];
手敲字串key,key容易寫錯
Key如果寫錯了,編譯器不會有任何警告和報錯,造成設錯資料或者取錯資料
使用模型的好處
所謂模型,其實就是資料模型,專門用來存放資料的對象,用它來表示資料會更加專業
模型設定資料和取出資料都是通過它的屬性,屬性名稱如果寫錯了,編譯器會馬上報錯,因此,保證了資料的正確性
使用模型訪問屬性時,編譯器會提供一系列的提示,提高編碼效率
app.name = @"Jack”;
NSString *name = app.name;
storyBoard:描述軟體介面,重量級,一般用來描述整個軟體的所有介面
xib:描述軟體介面,輕量級,一般用來描述局部介面
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封裝一個自訂view的步驟
1> 建立一個繼承UIView的自訂view,假設類名叫做(MJAppView)
2> 建立一個MJAppView.xib檔案來描述MJAppView內部的結構
3> 修改UIView的類型為MJAppView真是類型
4> 將內部的子控制項跟MJAppView進行屬性連線
5> MJAppView提供一個模型屬性
6> 重寫模型屬性的set方法,因為在set方法中可以拿到外界傳遞的模型資料
7> 把模型資料拆開,分別設定資料到對應的子控制項中
8> 補充:提供一個建立MJAppView的類方法,將讀取xib檔案的代碼屏蔽起來
IOS筆記1