我正在运行一些执行 [NSDictionary objectForKeyedSubscript:] 的代码,它在 iOS 5 上崩溃,但在 iOS 6 上没有崩溃。我正在使用 xcode 4.5.2 并针对 iOS 6.0 SDK 进行编译。
我认为这可以在 iOS 5 上运行,因为它只是一个编译器功能?我错了吗?我可以编写我自己的这些函数版本,但我担心其他地方出了问题,因为我希望它能够工作。
我正在运行一些执行 [NSDictionary objectForKeyedSubscript:] 的代码,它在 iOS 5 上崩溃,但在 iOS 6 上没有崩溃。我正在使用 xcode 4.5.2 并针对 iOS 6.0 SDK 进行编译。
我认为这可以在 iOS 5 上运行,因为它只是一个编译器功能?我错了吗?我可以编写我自己的这些函数版本,但我担心其他地方出了问题,因为我希望它能够工作。
好的,我将回答我自己的问题,尽管我不完全理解它失败的原因。
使用objectForKeyedSubscript:
等在 iOS 5 中运行良好(只要它是针对 iOS 6 SDK 编译的)。
问题是我命名了一个函数,并且由于找不到该方法而在该函数中 +(void)load
进行调用会导致断言。objectForKeyedSubscript:
这是我的命名错误,因为在应用程序完全运行之前调用了加载方法。我已经更改了函数的名称,一切都很好。
我假设 +load 在完全启动 NSDictionary 之前被调用。奇怪的是它在 iOS 6 下工作,而不是在 iOS 5 下工作。
也许这并不奇怪。
Apple 开发人员中 IOS 的 NSDictionary 参考
在 iOS 6.0 及更高版本中可用。
iOS6 之前的 SDK 有一个解决方法