可能重复:
Class methods which create new instances宣言构造其分配并初始化的目标C
你如何申报在Objective-C一个构造函数,将允许您跳过[[class alloc] init]
申报过程中的一步;而不是说例如Fraction* somefrac=[[Fraction alloc] init];
,只是说Fraction* somefrac
和构造函数将完成其余的。
可能重复:
Class methods which create new instances宣言构造其分配并初始化的目标C
你如何申报在Objective-C一个构造函数,将允许您跳过[[class alloc] init]
申报过程中的一步;而不是说例如Fraction* somefrac=[[Fraction alloc] init];
,只是说Fraction* somefrac
和构造函数将完成其余的。
这将实例化对象并将其返回。遵循命名约定,您需要将其设为autorelease
'd对象,并返回。
+ (id)fraction
{
return [[[self alloc] init] autorelease];
}
要使用它
Fraction *fraction = [Fraction fraction];
这遵循相同的模式作为苹果提供的类例如
NSArray *myArray = [NSArray array];
+(Fraction *) fraction
{
return [[[Fraction alloc] init] autorelease];
}
,然后你可以使用
Fraction *frac = [Fraction fraction];
这种风格采用了大量的目标C
如果你想子类'Fraction',会发生什么? –
@ Paul.s:那么你必须自己提供这样的类方法。它不合逻辑地调用'[Derived base]'而是'[Derived derived]' – Dani
这听起来不太干。就像你会再次写同样的方法一样? –
+1这是我怎么会做它。 :) –
确实。删除了我的冗余(和较少)答案。 – jrturton