2

プロパティに ivar を使用しない場合は、次のようにします。

@interface someClass : NSObject

@property (nonatomic, retain) NSArray * someArray;

@end

@implementation someClass

@synthesize someArray = _someArray;

- (void) someMethod
{
    if( self.someArray == nil ){
        // True on the first call?
    }
}


@end

初めてチェックするself.someArrayと が返さnilれますが_someArray、これは保証されていますか? 私は ivar が であることが保証されていることだけを読みました。ivar をnil宣言していない ( ivar ではない) ため、いつでもどこでも_someArrayそうなるかどうかはわかりません。nil

4

3 に答える 3

4

いつもゼロです。Objective-C は、割り当て時にクラス内のすべての変数を nil に初期化します。合成された ivar は同じルールに従います。

于 2011-12-29T16:46:48.410 に答える
3

プロパティは、自動的に合成される場合、インスタンス変数によってサポートされます。つまり、デフォルトでは、そのようなプロパティは を返しnilます。

于 2011-12-29T16:45:33.657 に答える
2

はい、すべてのプロパティ、ivar、および静的変数は常に に初期化されるように定義されていますnil。ARC では、これは__strongスタック変数に引き継がれます (__strongすべてのオブジェクト ポインターのデフォルトです)。

于 2011-12-29T16:45:25.973 に答える