1

私が読んでいる本には、オブジェクトを割り当てた後、インスタンスでinit関数を呼び出す必要があると書かれています。ただし、initメソッドを呼び出さない場合、クラスの機能に違いは見られませんでした。では、init関数は正確に何をしているのでしょうか?以下は、単純なクラスのインターフェースです。

@interface Fraction: NSObject
{
   int numerator;

   int denominator;
}
-(void) print;

-(void) setNumerator: (int) num;

-(void) setDenominator:(int) den ;

@end
4

2 に答える 2

1

initオブジェクトが定義された状態になるように、必要なすべてのインスタンス変数を初期化することを目的としています。の後alloc、すべてのivarが0/ nil/NULLに設定されます。これは、オブジェクトで許可されている状態ではない可能性があります(たとえば、denominator決して許可されるべきではありません0)。

initクラスが継承したメソッドNSObjectは何も実行しないため、クラスがivarを初期化する必要がない場合は、独自のメソッドを実装する必要はありません。ただし、メソッドが何も実行しないことがわかっている場合でも、常にinit直後に呼び出すallocことをお勧めします(これは永遠に当てはまると誰が言いますか?)。

于 2012-06-13T11:46:45.200 に答える
1

インスタンスでinit関数を呼び出す必要があるオブジェクトの割り当て

として扱うことができます

オブジェクトの割り当てインスタンスでinit関数を呼び出す必要があります

Initは通常、クラス内のインスタンス変数を初期化するために使用されます。

NSObjectクラスのinitメソッドでは、初期化は行われず、単にselfを返します。

于 2012-06-13T11:49:41.150 に答える