objectForKeyedSubscript: crash on iOS 5.1

2019-02-21 04:34发布

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.

3条回答
手持菜刀,她持情操
2楼-- · 2019-02-21 04:58
混吃等死
3楼-- · 2019-02-21 05:02

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.

查看更多
在下西门庆
4楼-- · 2019-02-21 05:09

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?

查看更多
登录 后发表回答