3

Apple http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.htmlのドキュメントを読みました

オブジェクトがnullかどうかを確認できると書かれています...

 XYZPerson *somePerson;
    // somePerson is automatically set to nil
 if (somePerson != nil) {
        // somePerson points to an object
    }

おそらく私は何か間違ったことをしていますが、それが何であるかを見つけるためにあなたの助けが必要です. 私はクラス C2 を持っています。C2 オブジェクトを作成しますが、初期化はしません。以下のコードで確認すると、アプリは出力に NOT NİL を書き込みます。

ご協力いただきありがとうございます。

C2 * o3;

    if (o3 != nil) {
        NSLog(@"NOT NİLLLL");
    }else{
        NSLog(@"NOT");
    }
4

1 に答える 1

5

初期化時にゼロに設定されるクラスのメンバーとは異なり、ローカル変数は ARC より前のコンパイラによって自動的に初期化されません。o3ローカルを にしたい場合はnil、自分で初期化する必要があります:

C2 * o3 = nil;

プログラムによって明示的に指示されない限り、ローカルを初期化しないという動作は C に由来します。ここでも、デフォルトではローカルは初期化されません。

于 2012-12-16T23:18:26.163 に答える