objective-c的數(shù)據(jù)類型有NSString航缀,NSNumber,NSArray,NSMutableArray,NSData等等堰怨,這些都是class芥玉,創(chuàng)建后便是對(duì)象,而C語(yǔ)言的基本數(shù)據(jù)類型int备图,只是一定字節(jié)的內(nèi)存空間灿巧,用于存放數(shù)值赶袄;NSInteger是基本數(shù)據(jù)類型,并不是NSNumber的子類抠藕,當(dāng)然也不是NSObject的子類饿肺。NSInteger是基本數(shù)據(jù)類型Int或者Long的別名(NSInteger的定義typedef long NSInteger),它的區(qū)別在于,NSInteger會(huì)根據(jù)系統(tǒng)是32位還是64位來決定是本身是int還是long.
id聲明的對(duì)象有什么特性幢痘?
id聲明的對(duì)象具有運(yùn)行時(shí)的特性唬格,即可以指向任意類型的objective-c的對(duì)象;
objective-c有私有方法嗎颜说?私有變量呢购岗?
objective-c類里面的方法只有兩種,靜態(tài)方法和實(shí)例方法
在objective-c 中门粪,所有實(shí)例變量默認(rèn)都是受保護(hù)的喊积,所有實(shí)例方法默認(rèn)都是公有的
定義屬性時(shí),什么情況使用copy,assign,retain?
assige用于簡(jiǎn)單數(shù)據(jù)類型玄妈,如NSInteger,double,bool
retain和copy用于對(duì)象
copy用于當(dāng)a指向一個(gè)對(duì)象乾吻,b也會(huì)想指向同樣的對(duì)象的時(shí)候,如果用assign拟蜻,a如果釋放绎签,再調(diào)用b會(huì)crash,如果用copy的方式酝锅,a和b各自有自己的內(nèi)存诡必,就可以解決這個(gè)問題。
retain 會(huì)使計(jì)數(shù)器加一搔扁,也可以解決assign的問題爸舒。另外:atomic和nonatomic用于決定編譯器生成的getter和setter是否為原子操作。在多線程環(huán)境下稿蹲,原子操作是必要的扭勉,否則有可能引起錯(cuò)誤的結(jié)果。
加了atomic苛聘,setter函數(shù)會(huì)變成下面這樣:
if(property != newValue){
[property release];
property? = [newValue retain];
}
類變量的@prtected,@private,@public,@package的聲明各有什么含義
objective-c對(duì)存取權(quán)限的設(shè)定涂炎。也是變量的作用域。
protected 該類和所有的子類中的方法可以直接訪問這樣的變量设哗,這是默認(rèn)的璧尸。
private--該類中的方法可以訪問這樣變量,子類不可以熬拒。public--除了自己和子類中的方法外,也可以被其他類或者其他模塊中的方法所訪問垫竞。開放性最大澎粟。package--對(duì)于64位圖像蛀序,這樣的成員變量可以在實(shí)現(xiàn)這個(gè)類的圖像中隨意訪問。