-4

なぜ「return self;」と入力するのでしょうか。「return 0;」ではなく、クラスの最後に? 2つのステートメントの違いは何ですか?

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    //Call the init method implemented by the superclass
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
       //Create two arrays and make the pointers point to them
       questions = [[NSMutableArray alloc] init];
       answers = [[NSMutableArray alloc] init];

       //Add questions and answers to the arrays
       [questions addObject:@"What is 7 + 7?"];
       [answers addObject:@"14"];

       [questions addObject:@"What is the capital of Vermont?"];
       [answers addObject:@"Montpelier"];

       [questions addObject:@"From what is cognac made?"];
       [answers addObject:@"Grapes"];

   }

   // Return the address of the new object
   return self;
}

@end
4

2 に答える 2

6

ポインターreturn 0;を返すためです。NULL正常に実行されたイニシャライザに期待するものではありません (まさに、初期化したオブジェクトを返すことになっているためです。そうしないと、オブジェクトが失われてしまいます)。初期化子は ではありませんmain()

于 2013-07-05T20:35:02.510 に答える
1

技術的には、init 関数を使用する場合は、次のようになります。

MyClass *foo = [[MyClass alloc] initFunction];

したがって、0 を返すと、オブジェクト foo は新しく作成された MyClass にアクセスできなくなります。

于 2013-07-05T20:36:26.190 に答える