I'm running some code that does a [NSDictionary objectForKeyedSubscript:] and it's crashing on iOS 5, but not iOS 6. I am using xcode 4.5.2 and compiling against the iOS 6.0 SDK.
I assumed that this would work on iOS 5 since it's just a compiler feature? Am I wrong about that? I can just write my own versions of those functions, but I'm worried that something else is wrong since I would expect it to work.
NSDictionary reference for IOS in Apple developer
Available in iOS 6.0 and later.
OK, I'm going to answer my own questions, although I don't completely understand why it was failing.
Using objectForKeyedSubscript:
and the like works fine running in iOS 5 (as long as it was compiled against the iOS 6 SDK).
The problem was I named a function +(void)load
and making objectForKeyedSubscript:
calls in this function causes an assert due to the method not being found.
This was an naming error on my part because the load method is called before the App is fully running. I have changed the name of my function and all is well.
I assume +load is being called before something with NSDictionary is fully inited. Odd that it works under iOS 6 and just not iOS 5.
Maybe that's not odd.
There is a workaround for pre-iOS6 SDKs
Checkout question here: Is there any way to get the neat Objective-C literal indexing feature in Xcode 4.4?