標籤:c code ext a int get
1. @property的參數說明
ARC是蘋果為了簡化程式員對記憶體的管理,推出的一套記憶體管理機制
使用ARC機制,對象的申請和釋放工作會在運行時,由編譯器自動在代碼中添加retain和release
1> strong:強指標引用的對象,在生命週期內不會被系統釋放
在OC中,對象預設都是強指標
2> weak:弱指標引用的對象,系統會立即釋放
弱指標可以指向其他已經被強指標引用的對象
@property參數使用小結:
1> 控制項用weak
2> 屬性對象用strong
3> 非物件類型用assign
4> 字串NSString用copy
提示:在純手碼實現介面布局時,如果通過懶載入處理介面控制項,需要使用strong強指標
2. 關於九宮格布局的計算方法
能夠公用的常量盡量給抽取出來,以便增加九宮格布局的靈活性,盡量保證做到:
1> 根據要顯示的資料自動調整小格子的位置和數量
2> 一旦調整了要顯示的列數,僅需要修改少量的數值即可做到
3. 關於UIButton的一些補充
3.1 按鈕的類型
在iOS的控制項中,只有UIButton提供了類方法,可以在執行個體化按鈕時指定按鈕的不同類型。
UIButtonTypeCustom和[[UIButton alloc] init]是等價的
3.2 修改按鈕字型
在UIButton中有兩個對象屬性是定義了readonly的:
1> titleLabel
2> imageView
@property中readonly表示不允許修改這兩個對象屬性的指標地址,但是可以修改其內部的屬性
注意:由於按鈕的字型大小是所有狀態共用的,因此可以通過
button.titleLabel.font= [UIFont systemFontOfSize:14.0];
修改按鈕標籤文本的字型大小
但是不能使用 ( button.titleLabel.text = @"下載"; ) 代碼設定按鈕標籤的常值內容,因為按鈕標籤的常值內容是跟按鈕的狀態相關的,按鈕的預設和高亮狀態的文字可能是不同的。
4. 塊動畫
4.1 首尾式動畫
如果只是修改控制項的屬性,使用首尾式動畫還是比較方便的,但是如果需要在動畫完成後做後續處理,就不是那麼方便了
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:動畫期間];
// 修改屬性的動畫代碼
// ......
[UIView commitAnimations];
4.2 塊動畫
塊動畫相對來說比較靈活,尤為重要的是能夠將動畫相關的代碼編寫在一起,便於代碼的閱讀和理解,在IOS中基本都使用塊動畫
[UIView animateWithDuration:2.0 animations:^{
// 修改控制項屬性動畫
label.alpha = 0.0;
} completion:^(BOOL finished) {
// 刪除控制項
[label removeFromSuperview];
}];
5. 字典轉模型
5.1 字典轉模型的好處:
1> 降低代碼的耦合度
2> 所有字典轉模型部分的代碼統一集中在一處處理,降低代碼出錯的幾率
3> 在程式中直接使用模型的屬性操作,提高編碼效率
模型應該提供一個可以傳入字典參數的構造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
5.2 instancetype & id
1> instancetype在類型表示上,跟id一樣,可以表示任何物件類型
2> instancetype只能用在傳回值類型上,不能像id一樣用在參數類型上
3> instancetype比id多一個好處:編譯器會檢測instancetype的真實類型
5.3 在模型中添加readonly屬性
// 定義屬性時,會產生getter&setter方法,還會產生一個帶底線的成員變數
// 而如果是readonly屬性,則只會產生getter方法,同時沒有成員變數
@property (nonatomic, strong, readonly) UIImage *image;
@interface LFAppInfo()
{
UIImage *_imageABC;
}
- (UIImage *)image
{
if (!_imageABC) {
_imageABC = [UIImage imageNamed:self.icon];
}
return _imageABC;
}
在模型中合理地使用唯讀屬性,可以進一步降低代碼的耦合度。
5.4 使用資料模型的好處:
*** 調用方不用關心模型內部的任何處理細節!
6. XIB
Xib檔案可以用來描述某一塊局部的UI介面
XIB & Storyboard
相同點:
1> 都用來描述軟體介面
2> 都用Interface Builder工具來編輯
不同點
1> Xib是輕量級的,用來描述局部的UI介面
2> Storyboard是重量級的,用來描述整個軟體的多個介面,並且能展示多個介面之間的跳轉關係
7. View的封裝思路
1> 如果一個view內部的子控制項比較多,一般會考慮自訂一個view,把它內部子控制項的建立屏蔽起來,不讓外界關心
2> 外界可以傳入對應的模型資料給view,view拿到模型資料後給內部的子控制項設定對應的資料
8. xcode一些常用快速鍵
建立
shift + cmd + n 建立項目
cmd + n 建立檔案
視圖
option + cmd + 斷行符號 開啟助理編輯器
cmd + 斷行符號 顯示主視窗
cmd + 0 導航視窗
option + cmd + 0 工具視窗
在.m & .h之間切換 control + cmd + 上/下
按照瀏覽檔案的前後順序切換 control + cmd + 左右
查看標頭檔 control + cmd + j
切換到對應的函數control + 6 支援智能輸入,注意IME
運行
cmd + r 運行
cmd + . 停止
cmd + b 編譯
cmd + shift + b 靜態記憶體分析編譯,可以檢查程式結構上是否存在記憶體泄露
排版
control + i 將選中按鈕重新縮排
cmd + ] 向右增加縮排
cmd + [ 向左減少縮排
cmd + / 注釋/取消注釋,提示:取消注釋時,注釋雙斜線必須在行首
cmd + 向上 到檔案開始位置
cmd + 向下 到檔案末尾位置