/ / objectForKeyedSubscript:iOS 5.1でクラッシュ-Objective-C、IOS5、IOS6

objectForKeyedSubscript:iOS 5.1でクラッシュする - objective-c、ios5、ios6

[NSDictionary objectForKeyedSubscript:]を実行するコードを実行していますが、iOS 5ではクラッシュしていますが、iOS 6ではクラッシュしていません。xcode4.5.2を使用し、iOS 6.0 SDKに対してコンパイルしています。

私はこれがiOS 5で動作すると仮定しましたそれは単なるコンパイラ機能ですか?それについて間違っていますか?それらの関数の独自のバージョンを書くことができますが、私はそれが機能すると期待するので何か他のものが間違っていることを心配しています。

回答:

回答№1の場合は3

Apple開発者のIOSのNSDictionaryリファレンス

iOS 6.0以降で利用可能です。


回答№2については2

OK、私は自分の質問に答えるつもりですが、失敗した理由を完全には理解していません。

使用 objectForKeyedSubscript: などは、iOS 5で正常に動作します(iOS 6 SDKに対してコンパイルされている限り)。

問題は、関数と名付けた +(void)load そして作る objectForKeyedSubscript: この関数を呼び出すと、メソッドが見つからないためアサートが発生します。

これは、アプリが完全に実行される前にloadメソッドが呼び出されるため、私の側では命名エラーでした。関数の名前を変更しましたが、すべて順調です。

NSDictionaryで何かが完全に初期化される前に、+ loadが呼び出されていると思います。奇妙なことに、iOS 5ではなくiOS 6で動作します。

たぶんそれは奇妙ではない。


回答№3の場合は0

iOS6以前のSDKには回避策があります

こちらのチェックアウトの質問: Xcode 4.4で適切なObjective-Cリテラルインデックス機能を使用する方法はありますか?