2012-06-13 36 views
1

我正在閱讀的書中說,在分配對象後,我需要調用實例上的init函數。但是,當我不調用init方法時,我沒有看到類的功能有任何差異。那麼init函數究竟做了什麼?下面是簡單的類接口:Objective-C OOP初始化函數

@interface Fraction: NSObject 
{ 
    int numerator; 

    int denominator; 
} 
-(void) print; 

-(void) setNumerator: (int) num; 

-(void) setDenominator:(int) den ; 

@end 

回答

1

init意味着初始化所有必要的實例變量,這樣的對象是在一個確定的狀態。在alloc之後,所有ivars設置爲0/nil/NULL,這可能不是您的對象的允許狀態(例如,denominator不應該爲0)。

init你的類從NSObject繼承的方法什麼都不做,所以如果你的類不需要初始化任何ivars你不必實現你自己的。但是,始終是請撥打initalloc,即使您知道該方法什麼也不做(誰說這將永遠保持真實?)。

1

分配一個對象,我需要調用init功能上的實例

可以被視爲

分配一個對象,我應該呼籲 實例的初始化函數

初始化通常用於初始化實例變量wit欣賞課堂。

在NSObject類的init方法中,不進行初始化,它只是返回self。