對象生成后只能調用一次初始化方法。
有的類也可以不通過alloc而通過使用別的方法來生成對象,有的類也可能返回一個初始化好的對象。
所有的OC編譯指令都是以@開頭,以便和c語言字符串區分。
類名不能和變量名以及方法名相同。
方法的的返回值類型需要用()包住。
類的方法名和實例變量名可以相同。
類的實現部分不需要再次聲明父類(接口部分聲明的時候必須寫上父類)
在方法內部如果定義的局部變量與實例變量相同,實例變量就會被覆蓋,這時將無法訪問實例變量。
方法中的self指的是實例對象自身,是OC內置的變量。self支持賦值等操作,也可以作為返回值被返回。使用self時一定要小心,要仔細分辨到底調用了哪個類的方法。
super并不確定指向某個對象,所以super只能被用于調用父類的方法,不能通過super完成賦值,也不能把方法的返回值指定為super。
程序的書寫風格:
Objective-c也被稱為混合編程語言,在編程時既可以使用c語言的編程風格,又可以使用面向對象的功能,程序中面向對象的部分還是使用面向對象的編程風格為好。以下幾種情況建議使用c語言的函數:
1.想使用成熟的c語言函數模塊時
2.想使用以c語言聲明的接口時,例如Unix的系統調用等
3.和面向對象沒有關系,用于數學,計算等時
4.類定義時
5.對速度有較高要求時(如果將系統中那些需要被反復調用上萬甚至上百萬次的功能改成函數調用,速度就會快很多,而除此以外的絕大部分則都沒必要改成函數調用的形式)
//類的實現文件中定義的函數不可以直接使用類中定義的實例變量和self變量,但可以把這些作為參數傳遞給函數。
靜態變量的定義:
靜態變量的生命周期為從程序的執行開始到結束,無論生成了多少個對象,都只有一個靜態變量存在,也就是說多個對象會共享同一個靜態變量。
#import和#include的基本功能一樣,稍有不同的是#import不存在嵌套引用的問題,因為OC中#import內置了判斷同一個文件是否已被引入的功能。