Base SDK, Deployment Target, Weak linking and import

With the new release of Xcode for iOS 4, I was disappointed to find out that it’s not possible to select versions of the iPhone SDK prior to 3.2 from the usual build drop-down box. So I decided to take the annoying opportunity to find out more about how to create applications that use a certain level of features (eg, iOS 4) while still running gracefully on previous versions of the operating system (eg, iPhone OS 3.0). I have wanted to get to grips with this for a long time. Given that you need to tweak these settings more consciously with Xcode 3.2.3, I suppose now is the time.
You can set the highest version of the OS you want to access through the Base SDK compiler option (careful: despite the debatable name choice, the Base SDK is actually the maximum version you intend to support). Then you can set the Deployment Target option to let the application run on previous versions of the OS, down to the one you specify in this setting.

Setting Meaning GCC Compiler Option
SDKROOT (Base SDK) The maximum version supported -isysroot
IPHONEOS_DEPLOYMENT_TARGET (Deployment Target) The minimum version supported -miphoneos-version-min

These properties can be configured by right-clicking on your Xcode project and selecting Get Info. The Build tab contains both, the former under the Architectures section, the latter under Deployment