一翻擒、熟悉Object-C
Object-C : 基于C語言基礎(chǔ) + 面向?qū)ο筇匦浴?/p>
1.了解Object-C 的起源
- OC 是C 的超集澈魄。使用動態(tài)綁定的消息結(jié)構(gòu):運行時才會檢查對象類型复哆。接受一條消息后纸泡,究竟執(zhí)行何種代碼吱涉,有運行時環(huán)境決定而不是編譯器幅聘。
- 核心: 運行時機制狼犯。
內(nèi)存管理:引用計數(shù)(reference counting)
重要的是理解 OC 的 <mark>動態(tài)綁定的消息結(jié)構(gòu)</mark>余寥。區(qū)別于其他函數(shù)調(diào)用的語言,接受的消息是由運行時環(huán)境決定而不是編譯器悯森。
區(qū)別:
1. “編譯期” 來完成的語音宋舷,性能提升需要重新編譯。
2. “運行時組件” 本質(zhì)是 “動態(tài)庫”更新運行時組件就可以提升性能瓢姻。
2.在類的頭文件中盡量少引用其他文件
- 除非確有必要祝蝠,否則不要引入頭文件。一般:.h 向前聲明(@Class ClassName).m(實現(xiàn)文件)引入頭文件幻碱。
- 把“該類遵循某協(xié)議” 的這條申明 移到“Class-continuation ”分類绎狭。 如果不行就把協(xié)議單獨放著一個頭文件中,然后引入收班。
- 在.h 里使用 @class 坟岔、 盡量 避免在 .h使用#import <> 不然增加編譯時間
- class-continuation category “class-continuation 分類”
3.多用字面量語法,少用與之等價的方法摔桦。
- 應(yīng)該多使用“字面量語法” 創(chuàng)建字符串社付、數(shù)值承疲、數(shù)組、字典鸥咖。
- 應(yīng)該通過“下標(biāo)”來訪問數(shù)組下標(biāo)或者字典所對應(yīng)的元素燕鸽。
- “字面量語法” 創(chuàng)建數(shù)組、字典啼辣,要確保值內(nèi)不含nil啊研。
相比較于使用比如
NSNumber *someNumber = [NSNumber numberWithInt: 1];
更推薦使用 —— 會使代碼更加整潔
NSNumber *somenNumber = @1;
例子:
NSString *someString = @"hello world";
NSNumber *floatNumber = @2.5f;
NSNumber * doubleNumber= @3.12546;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'A';
int x = 5;
float y = 6.755;
NSNumber *expressionNumber = @(x * y);
NSArray *array = @[@"1", @"2", @"3"];
NSString *number1 = array[0];
NSDictionary *dictionary = @{@"1":@"123123", @"11":@"123"};
NSString *dicString = dictionary[@"1"];
4.多用類型常量,少用#define 預(yù)處理指令
- 不要使用預(yù)處理指令定義常量鸥拧。 1.影響編譯器的工作效率党远。2.有人重定義了常量值編譯器也不會報錯。
- 實現(xiàn)文件中使用 static const 來定義“只在編譯單元可見的常量”富弦。
- 在頭文件中使用extern 來聲明全局常量沟娱。
#define ANIMATION_DURATION 03 //不推薦使用
static const NSTimeInterval kANimationDuration = 0.3; //推薦使用
5.用枚舉表示狀態(tài)、選項腕柜、狀態(tài)碼
- 應(yīng)該多用枚舉來表示 狀態(tài)济似、專遞方法的選項、狀態(tài)碼的等值盏缤,給這些值取些易懂的名字砰蠢。
- 處理枚舉類型的switch語句 不要實現(xiàn)default 分支。這樣加入新的枚舉值后唉铜,編譯器會提示開發(fā)著:switch有未處理的枚舉值台舱。