Sunday, September 6, 2009
Last week, Mac OS X 10.6 Snow Leopard was released! Snow Leopard represents a lot of hard work by a lot of folks at Apple and at seeded third-party developers, and it really shows. Now that it’s shipped, I can actually talk about some of the especially cool things this release has for developers.
Various pieces of Mac OS X and iPhone documentation have said for quite a while that the “preferred” method is now to use ISO-639-1 (two-letter) or ISO-639-2 (three-letter) language codes codes for localization purposes. Out of the box, Xcode’s project templates still use “English” rather than “en” as their default localization. How can you use […]
In the past, I’ve talked about ways to easily write unit tests for Cocoa applications, including [tests for user interfaces using target-action][1] and [tests for interfaces using Cocoa bindings][2]. There are some strategies you can apply to make writing tests for Cocoa code even easier, though. They’re just straightforward object-oriented programming, but sometimes we can […]
I listened to a recent episode of the [cocoaFusion:][1] podcast about properties and dot notation today. There were a few interesting points brought up, but I felt a couple of the most important reasons to use `@property` declarations and dot notation weren’t addressed. The biggest reason I see to use a different notation for both […]
As of today, I’ve been with Apple for five years, working on developer tools. It’s been great and I look forward to many more years of improving the experience for people creating great Mac and iPhone software!
In a few weeks, it will be **four years** since Mac OS X 10.4 Tiger was first released. That was the first release to include Core Data. It will also be about **one and a half years** since Mac OS X 10.5 Leopard was released, with significant enhancements to the Core Data API. It’s pretty […]
Saturday, September 27, 2008
There was a question recently on Stack Overflow asking how to handle cross-model relationships in managed object models. Now, the poster wasn’t asking about how to handle relationships across persistent stores — he was asking how to handle splitting a model up into pieces such that the pieces could be recombined. It turns out that […]
I thought the proper terminology was worth pointing out, since I’ve seen — and heard — some misuses lately. * **[LLVM][1]** is the Low-Level Virtual Machine and the project surrounding it. * **[LLVM-GCC][2]** is a compiler that uses GCC for its front-end and LLVM for its back-end. * **[Clang][3]** is the C language family front-end […]
What’s wrong with this code? – (void)registerForNotificationsFromTask:(NSTask *)task ( { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidTerminateNotification:) name:@”NSTaskDidTerminateNotification” object:task]; } If you didn’t notice anything wrong, look again. What’s bad about this is that it’s passing a **string literal** instead of a **global variable** for the notification name. The code should really look like this: – (void)registerForNotificationsFromTask:(NSTask *)task […]
The time is upon us once again — WWDC time! As I have the past few years, I’ll be in San Francisco all week, staying at the Hotel Kabuki in Japantown. And of course, I’ll be around the conference all week — especially in the labs. Come by and say hi, and I’ll be happy […]