• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to make Obj-C collection subscripting work on iOS 5?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


References: 
 >How to make Obj-C collection subscripting work on iOS 5? (From: Jens Alfke <email@hidden>)

  • Prev by Date: Re: How to make Obj-C collection subscripting work on iOS 5?
  • Next by Date: Re: NSSplitView crash upon restore from 10.8 Versions Browser
  • Previous by thread: Re: How to make Obj-C collection subscripting work on iOS 5?
  • Next by thread: Re: How to make Obj-C collection subscripting work on iOS 5?
  • Index(es):
    • Date
    • Thread