I'm trying to understand how Mac OS X actually implements the predefined
objects like NSApplication. Not in detail by function, but where the code
lives. This is by way of understanding what happens if the SDK version
doesn't match the system version. Let's suppose I would like to use an
imaginary method [NSApplication doCoolStuff] which was added in Mac OS
10.15, but I'm linking with the 10.14 SDK.

So, where does doCoolStuff actually exist? I can think of several
possibilities.

1. The code for NSApplication and its methods is linked entirely into my
application. This makes it self contained, though it might depend on system
calls and external services. So NSApplication exists inside my application,
and it runs the version written as part of the SDK I link with (10.14).
There is no way for me to call   [NSApplication doCoolStuff]  , because it
doesn't exist in the NSApplication I am using (10.14 runtime).

2. The code for NSApplication is dynamically linked from system-provided
shared code of some kind, using the same code regardless of the SDK version
used. The shared code may include some differences according to info it has
on the SDK used to build the current app. In this case perhaps I could call
[NSApplication doCoolStuff], though not by coding that; something involving
NSSelectorFromString.

3. The code for NSApplication is dynamically linked from system-provided
shared code of some kind, using code dependent on the SDK version used. The
methods provided will depend on the SDK version used. This would imply
that, like case 1, is no way for me to call  [NSApplication doCoolStuff]  ,
because it doesn't exist in the NSApplication runtime I am using.

4. The code for NSApplication is a stub to some other kind of external
interface I never heard of...

Thanks in advance!
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to