2012-07-30 72 views
2

我正在为NSObject的子类写一个方法,它合并了常见的NSObject方法“+ alloc”和“-init”。这是为了节省创建类的实例的时间。如何合并+ alloc和-init?

(该子也是一个抽象类,它是像继承NSObject的替代,因此该方法必须与子类兼容)。

对于“制造”的方法,这是写作的最佳途径它:

+(id)make 
{ 
    id newObject = [[self.class alloc] init]; 

    return newObject; 
} 

如果有更好的方法,它会是什么?

感谢

+0

仅供参考:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html – 2012-07-30 17:46:10

+1

我假设通过“节省时间创建实例一个类“的意思是”节省时间输入“,而不是”节省一些CPU周期“,因为类方法实际上比较慢。 – dasblinkenlight 2012-07-30 17:49:06

+1

在类方法中,'self'是类,'[self class]'是不必要的。这可以简单地写成'return [[self alloc] init];' – 2012-07-31 00:11:11

回答

6

的更好的方法是只使用+new,已经存在:)

+1

哦。非常感谢你! – Macro206 2012-07-30 18:00:54

3

可以使用[self.class new]这是同样的事情,呼吁[[self.class alloc] init]

+2

在类方法中,'self' _is_类和'[self class]'是不必要的。 – 2012-07-31 00:11:04

2

我觉得new作品真的很好。

SomeObject *object = [SomeObject new]; 
1

为了使简单:

id newObject = [[self alloc] init]; 

,你可以将其替换为:

id newObject = [self new]; 

但reme​​ber,在许多定义的对象,你可以使用其他的初始化,那么你需要用途:

...alloc] init...] 

结构体。

相关问题