• 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: IBOutlet to different classes, conditional build
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IBOutlet to different classes, conditional build


  • Subject: Re: IBOutlet to different classes, conditional build
  • From: Trygve Inda <email@hidden>
  • Date: Thu, 24 Feb 2011 06:29:11 +0000
  • Thread-topic: IBOutlet to different classes, conditional build

>
> On 24/02/2011, at 11:23 AM, Trygve Inda wrote:
>
>> So when I define MyCommonAppDelegate in the nib, it should only have the
>> "SparkleUpdate" IBAction in the retail version... So this code really sits
>> in MyPrefPaneDelegate... But how do I get IB to realize this?
>>
>> I am really trying not to have any duplicated code here.
>
>
> You probably need to have two nibs.
>
> In your project you'll have two targets, one for App Store, one not. If you
> show Target Membership for the source list, you can check the membership box
> against the appropriate nib for each target.
>
> It's also hard to avoid conditional compilation unless you factor out your
> code into separate files (categories perhaps) and use the same target
> membership to choose which code is included in which target. However,
> conditional compilation isn't too bad - just add some constant to one of the
> target's 'preprocessor macros' and then you can conditionally compile based on
> that using #ifdef.
>
> You can also use the Target Membership to drop out the Sparkle framework from
> the App Store build. Note that there's no need to conditionally remove
> Sparkle-related code from your app such as its delegate methods and so on. If
> the user doesn't have the menu commands, and the framework isn't there, the
> code will never be called.
>
> --Graham
>
>
>


One thing I am running into:

I have

#ifdef RETAIL
@interface MyObjectClass : NSPreferencePane
#endif

#ifdef APPSTORE
@interface MyObjectClass : NSObject
#endif
{
    stuff here
}

I get errors in IB like: "cannot integrate class information because the
declarations have different superclasses.

I need one nib to contain an instance of MyObjectClass (asa  subclass of
NSObject) and a different nib to contain an instance of MyObjectClass (as a
subclass of NSPreferencePane).

MyObjectClass uses conditional code so that the version that is a subclass
of NSPreferencePane  has methods like willSelect while the other version has
stuff like applicationDidFinishLaunching

It seems however that IB can only see it one way even if they are in
different nibs.

In either case, the two nibs also contain ClassA, ClassB, ClassC all of
which are subclasses of NSObject. These three classes need to have an
IBOutlet to MyObjectClass.

So I need:

Nib #1                        Nib#2
MyObjectClass : NSObject      MyObjectClass : NSPreferencePane
ClassA                        ClassA
ClassB                        ClassB
ClassC                        ClassC

Classes A B C are totally identical, while MyObjectClass has 3 or 4 methods
specific to the nib and 10 other common methods.

How can I properly set this up?

T.





_______________________________________________

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: IBOutlet to different classes, conditional build
      • From: Graham Cox <email@hidden>
References: 
 >Re: IBOutlet to different classes, conditional build (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: NSInternalInconsistencyException
  • Next by Date: Re: IBOutlet to different classes, conditional build
  • Previous by thread: Re: IBOutlet to different classes, conditional build
  • Next by thread: Re: IBOutlet to different classes, conditional build
  • Index(es):
    • Date
    • Thread