質問

[instance methodName:Parameter] を使用して他のクラスがこれらのメソッドを呼び出せるように、クラスにいくつかのメソッドを記述したい。

クラスが UIViewController のサブクラスである場合、 initWithNibName を使用して初期化できます。しかし、 NSObjectのサブクラスにメソッドを書きたいのですが、どのように初期化できますか?

役に立ちましたか?

解決 2

これでうまくいくかもしれない:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];

他のヒント

iphonyは正しいのですが、自分でinitメソッドを記述する必要があるとは言いません。通常、initメソッドは次のようになります。

- (id) init
    {
    if (self = [super init])
         {
         myMember1 = 0; // do your own initialisation here
         myMember2 = 0;
         }
    return self;
    }

アップルのドキュメントによると

  

NSObjectクラスで定義されているinitメソッドは初期化を行いません。単にselfを返します。

そして、ただ書きたいと思うことができます

- (id) init
  {
    myMember1 = 0; // do your own initialisation here
    myMember2 = 0;
    return self;
  }

これは間違っており、ドキュメントに明示的に記載されているものに従っていません。

  

この(init)メソッドのカスタム実装では、super’ sを呼び出す必要があります   指定された初期化子は、新しいオブジェクトを初期化して返します。

必須。すべきではない、できる、すべきであるなど。

NSObjectのinitが将来変更されないと仮定すべきではありません。カスタムクラスの派生元のスーパークラスも同様です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top