Sep 10

In this post How To Create Conditional Log Statements in Xcode I described how you could add a DEBUG flag to your Xcode project setting so that you could use statements like #ifdef DEBUG in your code.

If you follow the instructions in the post for a 3.0 project you will get an error:

There’s already another key named “GCC_PREPROCESSOR_DEFINITIONS”. Please enter a different name.

If you scroll through all the build settings you will not find one labeled GCC_PREPROCESSOR_DEFINITIONS. This is because this setting has helpfully been relabeled “Preprocessor Macros” and is now listed under the heading GCC 4.2 – Preprocessing:


To find out how any of these new “helpful” labels are actually translated to compiler settings, click on the Research Assistant button at bottom left corner of the window (the button that looks like a pair of reading classes on top of a stack of books) and you’ll see this:

Xcode Research Assitant

Note that I’ve only seen this change for projects that I’ve created in Xcode 3.1.3 (which by default only have a SDK 3.0 target). Projects that were created in older versions of Xcode (even if they can target SDK 3.0) still show the GCC_PREPROCESSOR_DEFINITIONS label under the heading User-Defined.

written by Nick \\ tags: ,

Jun 29

With the 3.0 iPhone SDK a new project will by default have only two options listed under Active SDK: iPhone Device 3.0 and iPhone Simulator 3.0.

Xcode 3.1.3 Default List of Active iPhone SDKs

Fortunately Xcode has not forgotten how to create 2.x targeted projects, it’s just that those options seem to be hidden. Xcode usually has multiple ways to accomplish every task. Here’s one way to add the 2.x SDKs to your Xcode drop down:

  1. Select the project file and Get Info.
  2. On the General tab go down to “Base SDK for All Configurations:” and select your desired target SDK from the drop down.

    Xcode 3.1.3 Select Active iPhone SDK

  3. Close the window.
  4. The drop down should now include the new SDK you just selected as an option.

Xcode 3.1.3 Updated List of Active iPhone SDKs

written by Nick \\ tags:

Jun 17

Sorry about the long absence from the blog. I’ve been busy working on several 3.0 projects. One of the apps I worked on was showcased during Apple’s keynote at WWDC. That was really cool!

  • 3.0 was released to the eagerly waiting public today. For us developers this is mostly an non-event since we’ve been working with the new features for quite a while. Just one note on upgrading your iPhone: During the upgrade process there is a step where you phone has to be re-activated and I’ve read reports that this activation server has been struggling under the immense load today. You may want to hold off slightly with upgrading your primary phone until the frenzy is over, otherwise you might temporarily end up with a phone that is only capable of making emergency calls. Friday is probably also a bad day since the 3G S will go on sale. At least Apple had the sense this year not to launch both the software upgrade and the new iPhone on the same day.
  • The new App Store is live with parental controls. If you haven’t logged in to iTunes Connect for a while you might want to do that and set the parental control settings for your apps. I don’t know what will happen if you don’t specify a rating. But unless you have over 500 apps on the store like one of my clients, then it’s a pretty quick process. And it will provide good information for you potential customers.
  • Now that the NDA is lifted for 3.0, expect to see some 3.0 related posts here. How do you write apps that take advantage of 3.0 and still work on 2.x? Anybody struggling with In App Purchases? Stay tuned.

written by Nick \\ tags: