4

Objective-Cで使用する前に一部のオブジェクトを初期化する必要がないのはなぜですか? たとえば、なぜこれはNSDate *today = [NSDate date];合法なのですか?

4

4 に答える 4

4

They are initialized within the date method. This is a common way to create autoreleased objects in Objective-C. Allocators of that form are called convenience allocators.

To learn more about that, read the "Factory Methods" paragraph in Apple's Cocoa Core Competencies document about Object Creation: http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCreation.html

To create convenience allocator for you own classes, implement a class method, named after your class (without prefix). e.g.:

@implementation MYThing
...

+ (id)thing
{
  return [[[MYThing alloc] init] autorelease];
}

...
@end
于 2011-05-13T13:15:03.577 に答える
1

today 静的な日付呼び出し内で初期化 (および自動解放) されます。

于 2011-05-13T13:15:35.340 に答える
0

2つの部分。

まず、他の人が述べているように、メソッドはオブジェクトを初期化してから自動解放してから返すことができます。それはここで起こっていることの一部です。

他の部分はそれがどのように定義されるかです。ほとんどのObjectiveC定義が-?で始まることに注意してください。あなたが言及するものはそうではありません。署名は次のようになります。

+ (NSDate*) date;

つまり、これはクラスメソッドであり、そのクラスのインスタンスではなく、クラス全体に適用されます。

于 2011-05-13T14:55:28.390 に答える
0
于 2011-05-13T14:48:21.567 に答える