4

もともと、デフォルトのinit関数があります

 -(id) init
   {
    if (self=[super init])
    {
      ......
     }
    return self;
   }

ただし、init 関数をオーバーライドして、カスタム オブジェクトやその他のオブジェクトを渡すのが好きです。

 -(id) initWithScore:(NSString*) score
    {
    if (self=[super init])

[super init] 関数は -(id) init 関数でのみ呼び出すことができるというエラーが表示されます。

では、オブジェクトを渡して self=[super init] を使用できるように修正するにはどうすればよいでしょうか。

エラー: init ファミリのメソッドの外で自分自身に割り当てることはできません。

4

2 に答える 2

23

プロジェクトを ARC に変換しようとしていて、新しいプロジェクトを作成し、古いプロジェクトのファイルを含めた後、私が得た問題の 1 つは

init ファミリーのメソッドの外で「self」に割り当てることはできません

セレクター名は次で始まる必要がありますinit-私の場合、initセレクターは次のとおりでした:

-(id)initwithPage:(unsigned)pageNum {...}

小さい「w」に注目してください。

私はそれを次のように変更しました:

-(id)initWithPage:(unsigned)pageNum {...}

大文字の「W」に注意してください。

私の問題は解決しました。

これが誰かに役立つことを願っています。

于 2012-12-04T14:15:12.410 に答える
1

新しいメソッドでタイプ id のオブジェクトを返す必要があります。

NSString *myscore プロパティを宣言したと仮定すると、次のように記述します。

-(id) initWithScore:(NSString*) score
 {
    self=[super init];
    if (self)
    {
       self.myscore = score;
    }
    return self;
}
于 2012-08-20T21:21:02.943 に答える