建構子是用來初始化實體的工具,建構完成的實體才能開始正常使用。


在 Obj-C 中,一個實體通常要先經過 alloc,這是一個 class method ,用來生成實體。生成之後只是向作業系統要記憶體,但記憶體內的資料並未清除整理,所以還要經過 init 的過成程,init 就是用來整理記憶體,把其內容整理成的內容。一個典型的實體初始化範例如下:

        NSString *name=[NSString alloc]; 
//保留一個NSString 所需要的記憶體空間,並把指標回傳給 name 這個指標變數,此時記憶體內並會作任何處理,內容可能是任何值
        [name init]; //將其內容全部設為 nil


上面就是設一個名子的變數並把它內容清空,有時我們也會把它合併成一行寫成

        NSString *name=[[NSString alloc] init];

有時我們除了單純的初始化之外,還要多做一點事。例如說我們如果要宣告一個的字串,需逐字元處理,並限制它的長度為 30 個字元時,我們除了使用 NSMutableString 還要設定長度為30,語法就會如此:

        NSMutableString *myCode = [[NSMutableString alloc] initWithCapacity:30];

上面的 code 中 initWithCapacity 就是另一種建構子 ,它除了清空資料之外,還設定好了它的容量長度。習慣上,各式的建構子都會以 initWithXXX..... 做為各式建構方法的的名子。

 
各種不同的建構子
 
實際上,有非常大量的,不同用途的建構子,會出現在我們的開發工具中,當然,你也可以建立自已的建構子。

arrow
arrow

    shenfive 發表在 痞客邦 留言(0) 人氣()