• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Tips to deploy applications to multiple Mac OS X versions
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tips to deploy applications to multiple Mac OS X versions


  • Subject: Re: Tips to deploy applications to multiple Mac OS X versions
  • From: Ben Lachman <email@hidden>
  • Date: Thu, 10 Apr 2008 02:08:18 -0400

On Apr 9, 2008, at 3:27 PM, David Duncan wrote:
On Apr 9, 2008, at 7:43 AM, Lorenzo Bevilacqua wrote:

I'm trying to build a Cocoa application so that it can run on Mac OS X from version 10.3.9 to 10.5.
I have 10.5 installed so the application runs fine on my system and on other Leopard systems.
I haven't build a project for multiple platforms yet, so I tried to duplicate the main Xcode target and set different deployment target settings like

Typically you would only use 1 target. Use the SDK to the OS whose API your are targeting (such as the 10.5 SDK). Then set the deployment target to the minimum version you wish to run on (example, 10.3). Finally, you would do runtime checks for API availability.

This is totally true. Multiple binaries make unhappy users. Of course buggy cross-version binaries make unhappy users too.



- Is there a way to differentiate part of code by platform? I remember I saw in some files lines like this


#if MACOSX_DEPLOYMENT_TARGET == MAC_OS_X_VERSION_10_4
#endif

is this correct?


This is a compile time check. Generally it is appropriate if you plan to ship a binary with a specific compile-time dependency. It sounds like you really want a run time check, which requires you to check for the availability of the features you are trying to use. How you check for this will depend on what you are doing to some degree.



To elaborate:

Your code will have checks like this in it:

if( [someObject respondsToSelector:@selector (niftyLeopardFeatureMethod:)] )
[someObject niftyLeopardFeatureMethod:anotherObject];
else
// handle the 10.4 and/or 10.3.9 case


If you would like to be able to build your project on Tiger/Panther you will have to enclose version specific code in "#if MACOSX_DEPLOYMENT_TARGET ..." compiler directives.

you should also read:

<http://developer.apple.com/documentation/DeveloperTools/Conceptual/ cross_development/index.html>

->Ben




_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Tips to deploy applications to multiple Mac OS X versions
      • From: Steve Christensen <email@hidden>
References: 
 >Tips to deploy applications to multiple Mac OS X versions (From: Lorenzo Bevilacqua <email@hidden>)
 >Re: Tips to deploy applications to multiple Mac OS X versions (From: David Duncan <email@hidden>)

  • Prev by Date: Re: Highlight color of a NSTableView row
  • Next by Date: Re: some questions about creating image thumbnails
  • Previous by thread: Re: Tips to deploy applications to multiple Mac OS X versions
  • Next by thread: Re: Tips to deploy applications to multiple Mac OS X versions
  • Index(es):
    • Date
    • Thread