Ah, OK, thank you, that is most helpful. How
delightfully devious! Presumably this helps stop existing apps breaking
(dare I say, those from certain major vendors?) when a major revision of OS X
come out. I don't seem to be missing out on anything vital by building
against the 10.4 SDK so, while I continue to support Tiger, I will carry on as I
am. Thanks again for the info Chris. You don't get this kind of
from-the-horse's-mouth stuff working on Windows.
Paul Sanders.
----- Original Message -----
Sent: Friday, January 15, 2010 10:01 PM
Subject: Re: Developing for 10.4 and up
On Jan 15, 2010, at 1:23 PM, Paul Sanders wrote:
I
missed Chris's comment about that. Sounds important. Can I seek some clarification? If
I build against the 10.4 SDK and then run my app on 10.5, which
version of the frameworks do I pull in at runtime on the
end-users machine, 10.4 or 10.5? And if I'm pulling in 10.4, is there
a downside to that?
Sorry if I am asking for information which has
already been given, but if I
look in (for example) /System/Library/Frameworks/AppKit.Framework,
I only see one version in
there.
When you run on 10.5, you always
get the 10.5 binaries no matter what you linked against. The 10.5
frameworks are a superset of 10.4, but there are changes in behavior in existing
APIs. We do not use the "Version" feature of frameworks; it proved to be
fussy and boated.
"Typically
we detect where an application was built by looking at the version of the
System, Cocoa, AppKit, or Foundation frameworks the application was linked
against. Thus, as a result of relinking your application on SnowLeopard, you
might notice different behaviors, some of which might cause incompatibilities.
In these cases because the application is being rebuilt, we expect you to
address these issues at the same time as well. For this reason, if you are doing
a small incremental update of your application to address a few bugs, it's
usually best to continue building on the same build environment and libraries
used originally."
So
even if your app does not use 10.5 APIs, you might get different behavior when
building against the 10.4 SDK vs. the 10.5 SDK.
Chris
|