2011-05-13 63 views

回答

4

它们在date方法中初始化。这是在Objective-C中创建自动释放对象的常用方法。这种形式的分配者称为便利分配者。

要详细了解,请阅读苹果的可可核心能力文档中关于创建对象的“工厂方法”的段落:http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCreation.html

要创造便利分配给你自己的类,实现一个类的方法,你的类的名字命名(没有前缀)。例如: -

@implementation MYThing 
... 

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

... 
@end 
+0

我怎样才能知道什么时候可以用这种方式使用类?谢谢。 – lampShade 2011-05-13 13:19:10

+1

基本上,您可以通过查看方法声明中的方法名称和“+”号找到方便的分配器。名称通常是没有前缀的类名,加号表示它是一个类方法。苹果公司为他们提供了许多课程。一些突出的例子:[NSString stringWithFormat:],[NSNumber numberWithInt:],... – 2011-05-13 13:26:48

+2

约定是名称不以“alloc”,“new”,“copy”或“mutableCopy”开头的方法返回自动释放对象 – albertamg 2011-05-13 13:28:14

1

today是静态日期调用内部初始化(和自动释放)。

0

您只需通过调用alloc就您已分配的对象调用init…方法。 alloc只保留对象所需的空间,创建一个单元化的对象。

未初始化的对象将所有实例变量设置为零,零或等效类型。除了保留计数设置为1.

返回对象的所有其他方法都保证返回完全初始化的对象。 alloc是例外。

绝不可以对已经初始化的对象调用init…方法。简单的规则是使用alloc - init…之间的1对1关系,就是这样。

0

两部分。

首先,正如其他人所提到的,一个方法可以在返回对象之前初始化并自动释放对象。这是部分这里发生了什么。

另一部分是它是如何定义的。请注意大多数Objective C定义是如何以-开头的?你提到的那个没有。签名是这样的:

+ (NSDate*) date; 

也就是说,这是一个方法,适用于该类作为一个整体,而不是这个类的一个实例。

相关问题