Re: How to make Obj-C collection subscripting work on iOS 5?
Re: How to make Obj-C collection subscripting work on iOS 5?
- Subject: Re: How to make Obj-C collection subscripting work on iOS 5?
- From: Dave DeLong <email@hidden>
- Date: Mon, 20 Aug 2012 14:06:09 -0700
Tough question.
At a syntactic level, you could always download a recent version of Clang that you can use to compile your applications. This would allow you to use the syntax.
Unfortunately, as you've observed, this would still stick you with the missing method problem: objectAtIndexedSubscript et. al don't exist on iOS 5. You could put them in with a category, but I have no idea how to make a category conditionally load based on OS version, if that's possible at all, which means you'll still be stuck with the method smashing problem.
Another option would be to hack up Clang to not use the "objectAtIndexedSubscript" method at all, but a new, custom method, like "ja_objectAtIndexedSubscript". Then the implementation of that method could forward on to the appropriate version as necessary. However, this of course requires hacking up Clang and building your own version of it. IMO, it's not worth the effort just to get a new syntax feature.
Dave
On Aug 20, 2012, at 12:52 PM, Jens Alfke <email@hidden> wrote:
> I've just "modernized" a bunch of cross-platform code in Xcode 4.4, to use the new Obj-C literal and collection-access syntax. Works great when built for Mac OS. But now I discover that the code gets tons of compile errors on iOS because in the 5.1 SDK the NSArray and NSDictionary classes don't declare the -objectForKeyedSubscript: or -objectForIndexedSubscript: methods.
>
> Presumably this will be remedied in the hypothetical future release of Xcode that includes the iOS 6 SDK. But is there anything I can do until then to make this build and run on iOS 5.1?
>
> (And does this also imply that code using array/dictionary subscripting won't run on OS X 10.7?)
>
> My first thought was to declare some categories on NSArray and NSDictionary to define those methods, but that's likely to cause issues when iOS 6 comes out and already includes those methods — I'll get compile errors (which I can work around with #ifdefs) but also a warning at launch time because the methods are declared in two places.
>
> (Note that I'm _not_ asking anything about NDA'd beta software; I'm only asking how to make the compiler feature already available in Xcode 4.4 work on the already-available iOS 5.1.)
>
> —Jens
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden