iPhone應(yīng)用學(xué)習(xí)筆記之對象初始化
iPhone應(yīng)用學(xué)習(xí)筆記中對象的初始化是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)一下對象初始化的內(nèi)容,來看詳細內(nèi)容。為方便學(xué)習(xí),附有代碼!
1、關(guān)于 self = [super init]
最先運行的代碼是[super init],其作用是使超類完成它們自己的初始化工作。從根類NSObject繼承的類調(diào)用超類的初始化方法,可以使NSObject執(zhí)行所需的任何操作,以便對象能夠響應(yīng)消息并處理保留計數(shù)器。而從其他類繼承的類調(diào)用超類的初始化方法,可以使子類有機會實現(xiàn)自己全新的初始化。
實例變量所在的內(nèi)存位置到隱藏的self參數(shù)之間的距離是固定的,如果從init方法返回一個新對象,而需要更新self,以便其后的任何實例變量的引用可以唄映射到正確的內(nèi)存位置,這也是我們需要使用self = [super init]這種形式進行賦值的原因。
這個賦值操作值影響給init方法中self的值,而不影響該方法范圍以外的任何內(nèi)容。
2、有關(guān)便利初始化函數(shù)
許多類包含便利初始化函數(shù),他們用來完成某些額外工作的初始化方法。
NSString類:
- -(id) init;
以上方法初始化一個新的空字符串,對于不可變的NSString類來說,這個方法沒有多大用處。但是,你可以分配和初始化一個新的NSMutableString類的對象并開始向該對象中保存字符,你可以使用下面這樣使用此對象:
- NSString *emptyString = [[NSString alloc] init];
上面的代碼返回一個空字符串
當(dāng)然,你也可以接受格式化的字符串并輸出格式化的結(jié)果一樣。
- string = [[NSString alloc] initWithFormat:@"%d or %d", 25, 624];
上面的代碼返回一個字符串,其值為“25 or 624”;
更強大的是,你可以打開指定路徑上的文本文件,讀取文件內(nèi)容太,并使用文件內(nèi)容初始化一個字符串。
- string = [[NSString alloc] initWithContentsOfFile: @"words.txt"];
創(chuàng)建NSMutableArray數(shù)組,有一個很簡便的方法replaceObjectAtIndex:withObject,該方法最適合用來實現(xiàn)setTire:atIndex.
要使用replaceObjectAtIndex:withObject:方法,在指定的索引位置必須存在一個能夠被替代的對象。
新的NSMutableArray數(shù)組不包含任何內(nèi)容,因此需要使用一些對象作為占位符,NSNull類的對象非常適合完成此項工作,因此,我們在數(shù)組中添加4個NSNull對象
附上Tire.m的代碼:
- #import "Tire.h"
- @implementation Tire
- - (id) init
- {
- if (self = [self initWithPressure: 34
- treadDepth: 20]) {
- }
- return (self);
- } // init
- - (id) initWithPressure: (float) p
- {
- if (self = [self initWithPressure: p
- treadDepth: 20.0]) {
- }
- return (self);
- } // initWithPressure
- - (id) initWithTreadDepth: (float) td
- {
- if (self = [self initWithPressure: 34.0
- treadDepth: td]) {
- }
- return (self);
- } // initWithTreadDepth
- - (id) initWithPressure: (float) p
- treadDepth: (float) td
- {
- if (self = [super init]) {
- ppressure = p;
- treadDepth = td;
- }
- return (self);
- } // initWithPressure:treadDepth:
- - (void) setPressure: (float) p
- {
- ppressure = p;
- } // setPressure
- - (float) pressure
- {
- return (pressure);
- } // pressure
- - (void) setTreadDepth: (float) td
- {
- treadDepth = td;
- } // setTreadDepth
- - (float) treadDepth
- {
- return (treadDepth);
- } // treadDepth
- - (NSString *) description
- {
- NSString *desc;
- desc = [NSString stringWithFormat:
- @"Tire: Pressure: %.1f TreadDepth: %.1f",
- pressure, treadDepth];
- return (desc);
- } // description
- @end // Tire
小結(jié):iPhone應(yīng)用學(xué)習(xí)筆記之對象初始化的內(nèi)容介紹完了,希望本文對你有所幫助!