[Objective-C] Cannot assign to ‘self’ outside of a method in the init familyと怒られた件


スクリーンショット 2014 02 11 19 26 38

先日、Xcode5でObjective-Cの練習をしていたらタイトルのエラーが出たので何事〜?って思って色々調べたら、クッソくだらないミスだったので戒めエントリー

いましめエントリーシリーズは久しぶりだなー あんまりコード書いてないって事だな。
もっとコーディングをせねば・・


よくあるイニシャライズの件で

やりたい事としては、
self = [self initWithFrame:frame];
として、イニシャライザで初期化したインスタンスを取得する事。

教本に書いてある通りにかいたつもりだったのですが、
Cannot assign to ‘self’ outside of a method in the init family
って怒られましたです。

init family の外に self を assign できな、、、 ん? 
はぁ〜〜?? よくわからん。 

こんな時は検索。 いつものStackOverFlowにたどり着く。
同じようなエラーが出てる人がいました。こちら。

見ると、何やら以下のようなコメントが。。

If your method is a init, it must start with init:

はて。。? init でメソッドを始めないといけませんって書いてあるのは、わかるんですが。。。
自分、initで始めてますけどー!

と、思いつつもよーーーく見てみる。 すると、自分が書いたカスタムイニシャライザは。。

-(id)initwithImageName:(NSString *)imageName frame:(CGRect)frame caption:(NSString *)caption

もしかして、withの “w” が小文字なのがいけない?!
っていって w => W に変えた所、無事動きました。

まとめ

Objective-Cのイニシャライズメソッドを書く時は init の後の文字は大文字から始める。
(じょ、、、常識なのかしら、、(;・∀・)、、、)

ちなみに今日松屋に久しぶりに行ってきたのですが、牛丼の並と卵で330円という安さに改めて驚きました。
いや、、安いでしょどう考えても、、、 これで味噌汁もつくからね。
おわり\(^o^)/



関連記事

コメント1件

 matoowo | 2014.07.20 17:51

初めまして。
同じエラーが出て困っていたらこのブログにたどり着きました。
全く同じ症状でしたw
私もinitwith~という風にしていました。

助かりました。ありがとうございます。

Comment





Comment



*