Xcode 4.4 is available (for Lion and Mountain Lion)(itunes.apple.com)
itunes.apple.com
Xcode 4.4 is available (for Lion and Mountain Lion)
http://itunes.apple.com/ca/app/xcode/id497799835?mt=12
4 comments
Any idea why literal syntax would only be for OS X?
Pretty sure the release note is incorrect.
I just tried and it works. Also search for "Objective-C Feature Availability Index" in the docs.
I just tried and it works. Also search for "Objective-C Feature Availability Index" in the docs.
I requires runtime support that hasn't yet shipped on a public version of iOS.
Isn't it a compile time feature?
Only partially.
Mike Ash goes into some detail on his excellent blog: http://www.mikeash.com/pyblog/friday-qa-2012-06-22-objective...
Long story short, some of it is compile time, but some of it involves classes in Foundation (like NSArray and NSDictionary) implementing new methods (like objectAtIndexedSubscript).
iOS needs a base SDK update before those methods will be available there. Or you could monkey-patch them in with a category yourself in the meantime.
Mike Ash goes into some detail on his excellent blog: http://www.mikeash.com/pyblog/friday-qa-2012-06-22-objective...
Long story short, some of it is compile time, but some of it involves classes in Foundation (like NSArray and NSDictionary) implementing new methods (like objectAtIndexedSubscript).
iOS needs a base SDK update before those methods will be available there. Or you could monkey-patch them in with a category yourself in the meantime.
Literals and object/container subscripting are different things, even though they appear at the same time. Container literals should be compile time too and available to all versions of iOS (or at least v4 and above).
I also think it should be possible to support container (NSArray, NSDictionary) subscripting for foundation classes at compile-time for all versions even if the new functions aren't around. They just have to translate to the existing functions. I bet they do this too[1]
(upvoted you, it is a very informative link).
Edit: some more thoughts.
[1] No, they don't do that in v4.4. But maybe they will in a future version of Xcode.
I also think it should be possible to support container (NSArray, NSDictionary) subscripting for foundation classes at compile-time for all versions even if the new functions aren't around. They just have to translate to the existing functions. I bet they do this too[1]
(upvoted you, it is a very informative link).
Edit: some more thoughts.
[1] No, they don't do that in v4.4. But maybe they will in a future version of Xcode.
Thanks for the link. I was wondering if they'd implemented type-inference to check what method to call for the indexing operator since the operand could be either an NSArray or a NSDictionary. It turns out they've elided the whole problem altogether by doing this at runtime with new methods. Given how dynamic objective-c is, this seems like the best way to go about it.
It has to be exposed in the SDK too. You can hack in some iOS support via a category but you'll have to use 4.5 if you want the real deal for iOS.
I just tried it in the iOS simulator and literals work. @[...] => NSArray, @{...} => NSDictionary, @# => NSNumber
their way of dealing with command line tools is rather annoying in this release
Yep, I wasn't able to install the Command Line Tools from the Xcode Preferences. It works if you do it manually ... by downloading the Command Line Tools from:
https://developer.apple.com/downloads/index.action
and now I have in my path clang 4.0!
https://developer.apple.com/downloads/index.action
and now I have in my path clang 4.0!
Both the June and July command line tools give me an error saying they don't support 10.8.
For whatever it may be worth, installing from the preferences worked fine for me. I heard other reports of failures, though, and assume it's related to the massive number of people all trying to download Mountain Lion at once.
It worked fine for me as well, installing it around 30 minutes ago.
That page only shows me the downloads for Xcode 4.3 and 4.5 Developer Preview, but it looks like I can use the 4.4 versions just fine by adding "/Applications/Xcode.app/Contents/Developer/usr/bin" to my $PATH
I couldn't get /Applications/Xcode.app/.../usr/bin/gcc to work for me today. It could not access stdlib includes and such. I got the Xcode preferences installer of the command-line tools to work, and that put a gcc in /usr/bin/ that worked completely. I don't know what's different between the two, but that seems to be the official way to do it.
Kudos to Apple for the self-contained command-line tools package download. Hopefully that'll continue with another update for 10.8.
Kudos to Apple for the self-contained command-line tools package download. Hopefully that'll continue with another update for 10.8.
when I tried earlier, it errored out. I just tried again and it is now downloading.
Instead of installing the command line tools package you can access any of the command line tools that's in Xcode.app by prefixing the command with xcrun. May be easier then installing/managing a whole separate installation of command line tools depending on your needs.
xCode 4.5 Beta versions are available too