-1

私はこれで混乱しています。どちらが優れているのか、その理由を教えてください。

これは両方とも割り当てと初期化に使用されることをどこかで読みました。誰かが newWithString のようにできないと私に言っていましたが、Xcode で試してみると、エラーが発生しませんでした

      NSString *AddEmail  =[[NSString alloc]initWithString:@"Add Email"];

      NSString *AddEmail  =[NSString new];

両方とも同じように機能しますか?

前もって感謝します

4

2 に答える 2

3

[[SomeClass alloc] init]と同じ結果になり[SomeClass new]ます。new は次のように実装されます

+ (id) new
{
    return [[self alloc] init];
}

使用newWithStringするメソッドは、「クラスメソッド+newWithStringが見つかりません」という非常に明確な警告を出すため、コードをコンパイルしても、この行で失敗します。( でカテゴリを宣言しない限りNSString)。

[[alloc] init]選択した init メソッドに従って、オブジェクトを割り当ててからその変数を初期化する方法を選択できるため、私は を好む傾向があります..

于 2013-04-25T06:41:34.523 に答える