On Jan 30, 2008, at 4:41 PM, Knowledge Engineering wrote:
Thanks, that worked, although I was hoping for a checkbox!
So is the official way to comment in my 10.5 only code still:
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
...
#endif
Right? Seems to work.
I don't that will achieve what you want. Ultimately, you will
(probably) build one release version of your product. So, that build
will either target the 10.5 SDK or the 10.4u one, and the code guarded
in that way will either be compiled in or not. In other words, using
preprocessor directives makes the decision at compile time.
This will just mask the issue, because all of your warnings will go
away when you switch to the 10.4u SDK, but your program will fail on
Tiger systems if you build your release against the 10.5 SDK.
You want to use run-time checks.
For C API, you want to test if the symbol has a non-NULL address:
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4
if (SomeLeopardOnlyFunction != NULL)
SomeLeopardOnlyFunction(args);
else
#endif
{
// Fallback to Tiger-appropriate code
}
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4
if (&SomeLeopardOnlyVariable != NULL)
/* Use the variable */;
else
#endif
// Tiger-appropriate code
For Objective-C API, you can check for the relevant selector, or
otherwise use the introspection facilities:
Note, that the preprocessor conditionals are only there to quiet the
warnings/errors you get from test-compiling against the 10.4u SDK
*after* you've implemented the proper run-time checks and fallbacks.
Keep in mind that the code within those conditionals _will_ be run in
any binary built against the 10.5 SDK, even when running on Tiger, so
it must be safe on that platform.
Note also that I test against MAC_OS_X_VERSION_10_4 rather than
MAC_OS_X_VERSION_10_5, because the latter isn't defined in the 10.4u
SDK and will be treated as though it's 0.
-Ken
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/xcode-users/email@hidden