1

Objective-C クラスを記述するときは、次の便利なメソッド構造を使用します。

+ (MyClass *) myClass {
    return [[[self alloc] init] autorelease];
}

- (id) init {
    if (self = [super init]) {
        // set-up code here...
    }
    return self;
}

MyClass*便利なメソッドが代わりに戻り値の型を指定する必要がある理由はありますidか? または、initメソッドは戻り値の型を指定する必要がありますか?

これは、Objective-C コードの一般的なパターンのようです。今まで深く考えたことはありませんでした。

4

2 に答える 2

4

最適なオプションは returninstancetypeです。これは、メソッドが関連する結果タイプを返すことを通知する結果タイプとして使用できるコンテキスト キーワードです。NSHipster のこの投稿を
チェックしてください。

于 2014-03-20T20:10:37.117 に答える
3

instancetypeは今、提案されたアプローチだと思います:

+ (instancetype) myClass {
    return [[[self alloc] init] autorelease];
}

- (id) init {
    if (self = [super init]) {
        // set-up code here...
    }
    return self;
}
于 2014-03-20T20:11:02.983 に答える