0

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

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

4

3 に答える 3

3

AppleデベロッパのIOSのNSDictionaryリファレンス

iOS6.0以降で利用できます。

于 2012-11-24T19:24:15.547 に答える
3

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

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

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

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

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

多分それは奇妙ではありません。

于 2012-11-24T20:25:10.107 に答える
0

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

ここでのチェックアウトの質問:Xcode 4.4できちんとしたObjective-Cリテラルインデックス機能を取得する方法はありますか?

于 2012-12-18T04:22:12.323 に答える