Cocoa(Objective-C) iPhone

iPhoneのSimulatorと実機での違い

[`evernote` not found]
LINEで送る
Pocket

iPhoneアプリの開発をしていてハマった事がまたありましたので残しておきます。

Objective-Cで、
例えばクラスAの@interface部で@protectedとして宣言していた変数aをサブクラスで呼ぶ場合、通常であればそのまま使えるはずなのですが、実機に向けてビルドするときにはエラーになってしまいました。

これは調べてみるとどうやら、
・シミュレータではデフォルトの設定が@protected
・実機ではデフォルトが@private
と言う事に原因がある様です。(そういった差が生まれないように@で明示的に宣言したつもりだったのですが)

最善の解決策ではないですが、-(id)gethoge;といったメソッドを作成しました。
カプセル化がしっかりできていないとは思うのですが、これでひとまずはエラー出ずにビルドし、問題なく動作するようになりました。

参考URL(StackOverflow:英語):
http://stackoverflow.com/questions/5513605/inheritance-working-on-simulator-but-not-on-iphone

Leave a Reply

Your email address will not be published.

CAPTCHA