在抽象类中,自定义的 init 方法如下所示:
- (id)init
{
self = [super init];
if (self)
{
//do some initialisations
}
return self;
}
这在使用抽象类时会非常好用:完全没有问题。但是,在创建对象时,我更Class *object = [Class new];
喜欢Class *object = [[Class alloc]init];
. 在我的抽象类中使用这种方法的问题在于这不起作用:
+ (id)new
{
id object = [super new];
if (object)
{
//do some initialisations
}
return object;
}
当试图访问对象的属性时,Xcode 会报错,说在 '__strong id' 类型的对象上找不到相应的属性。我猜那是因为编译器不知道我的对象有什么属性,因为它刚刚被创建。
有没有办法绕过这个限制?如果没有,我将只使用 init 方法,因为它工作得很好,但我只是对此感到好奇。