抽象クラスでは、カスタム 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;
}
オブジェクトのプロパティにアクセスしようとすると、「__strong id」タイプのオブジェクトに対応するプロパティが見つからないことを示すエラーが Xcode によって表示されます。これは、オブジェクトが作成されたばかりであるため、コンパイラがオブジェクトのプロパティを認識していないためだと思います。
この制限を回避する方法はありますか? そうでない場合は、問題なく動作する init メソッドを使用しますが、これについては興味がありました。