When developing an iOS or Mac app, NSLogs are very handy during development. These are quite useless for an app on an end users phone or computer, so removing every log is often a good idea, especially if you like to log a lot of information. This might sound like a pain, commenting out every NSLog whenever you build for the AppStore? But no, there’s a much simpler solution, coming from our friend the preprocessor macro.
When interacting with other applications on the Mac, AppleScript is the main option to use. Writing AppleScript to run within an application can be pretty annoying, and there’s no syntax checking unless you write it in AppleScript Editor first and then bring over the code. A good solution is using the ScriptingBridge framework, which will provide you with a class interface to interact directly with a target application. Of course your target application must support Applescript, just as if you were writing the script manually.
If you’ve ever needed to have an object with multiple delegates you may have created an array and then added each of your delegates to it. This does work but there’s a simpler way which is much easier to implement. Using the NSNotificationCenter you can have objects subscribe to the events/messages they want to know about and get called whenever that ‘event’ takes place. The Cocoa framework uses this as well, and let’s you subscribe to things such as an app entering the background, changing orientations, when it’s running out of memory and when the keyboard is presented or dismissed.
As of June 1st this year all newly submitted apps and versions on the Mac Appstore require sandboxing. Sandboxing means that each app is run inside it’s own quarantined space to make sure the app doesn’t do anything malicious. For a lot of apps this will be sufficient, but for apps that let you do really special stuff this is the thing that kills them.
In OS X Lion Apple introduced the concept of document versions, the ability to go back in time on documents and view or restore a version from the past. With this they introduced a “Lock” on documents that hadn’t been changed in over a week or so and requires you to unlock the document or duplicate it and save it elsewhere.