• 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: Using deprecated methods
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using deprecated methods


  • Subject: Re: Using deprecated methods
  • From: Keith Blount <email@hidden>
  • Date: Sat, 5 Jul 2008 06:46:40 -0700 (PDT)

Many thanks for your reply, much appreciated. Where can I find information on creating bundles and linking them only against a certain OS? I'm obviously using the wrong search terms in both the docs and in Cocoa-dev... Under the NSBundle documentation it explains how to get a class out of an existing bundle using -principleClass, but I can't see how to turn a class into a bundle, or how to link the bundle specifically against Leopard, for instance... Is there an example of how to do this somewhere?
Many thanks again and all the best,
Keith

----- Original Message ----
From: David Duncan <email@hidden>
To: Keith Blount <email@hidden>
Cc: email@hidden
Sent: Saturday, July 5, 2008 2:17:32 PM
Subject: Re: Using deprecated methods

On Jul 5, 2008, at 5:08 AM, Keith Blount wrote:

> I am currently overhauling printing in my application. I have a page
> layout accessory view and I now also want to add a print panel
> accessory view. My app runs on both Tiger and Leopard. -
> setAccessoryView: works on both Tiger and Leopard, for adding an
> accessory view to both NSPageLayout and NSPrintPanel. However, in
> both cases, -setAccessoryView: was (rather frustratingly in this
> case, I feel, as it worked fine) informally deprecated on Leopard.
> Instead, we are advised to use -addAccessoryViewController:, which
> uses an NSViewController. But the NSViewController class doesn't
> even exist on Tiger, so subclassing it and having it in the project
> will cause the app not to run on Tiger at all. I don't want a
> different build for both Tiger and Leopard, of course, So, what is
> the proper way of handling this? The path of least resistance is to
> use -setAccessoryView: and hope it doesn't get formally deprecated
> on Snow Leopard, and continues to work for a while
> despite its deprecated status. But that obviously isn't the *best*
> (or correct) way of doing things. Any alternative is going to be
> more complicated and involve having separate elements of code for
> Tiger and Leopard, which isn't ideal, but I would love to know the
> established way of handling this.


To handle a case like this, you are going to have to create a bundle
that you link against the 10.5 SDK and only load there. This bundle
will contain your NSViewController subclass and allow you to
conditionally call -setAccessoryView: on 10.4 and -
addAccessoryViewController: on 10.5. This is a general pattern that
you can use when you want to provide alternate functionality where it
is a requirement to subclass and that subclass only exists on a newer
version of the OS.

As for -setAccessoryView: (and other deprecated methods) there really
isn't a case of formal vs informal deprecation - deprecated is
deprecated. In this particular case, using -setAccessoryView: for
example will disable the inline print preview, so you'll want to avoid
calling it on 10.5.
--
David Duncan
Apple DTS Animation and Printing
email@hidden



_______________________________________________

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: Using deprecated methods
      • From: Jean-Daniel Dupas <email@hidden>
  • Prev by Date: Re: Using deprecated methods
  • Next by Date: Re: Popup dismissal
  • Previous by thread: Re: Using deprecated methods
  • Next by thread: Re: Using deprecated methods
  • Index(es):
    • Date
    • Thread