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