> > On 24/02/2011, at 5:56 PM, Trygve Inda wrote: > >> The problem is two-fold: >> >> 1) How can I have nibs, one with MyObjectClass:NSObject and the other with >> MyObjectClass:NSPreferencePane where MyObjectClass is essentially the same >> but with a few #ifdef to have conditional compilation. > > The real problem is that you're trying to define this chimera class in the > same header. If you split it into two separate headers, each nib only needs to > know about the header that applies to it. Target Membership will do the rest, > since the right nib and the right header are part of the same target and > there's no crosstalk to the other target.
How would I split it into two headers? In my .m file I can certainly use #ifdef to import the correct .h file, but IB is still going to see one header with: @interface MyObjectClass : NSPreferencePane And another with @interface MyObjectClass : NSObject > Since IB can't 'see' #ifdef in your header, you just can't do it in the same > header. Neither is there any reason to. Having done that, there's probably no > merit in trying to merge the code either, just have two separate objects, get > rid of all the #ifdefs and use Target Membership to select the right one for > the job. > >> 2) I need IBOutlets in ClassA, ClassB and ClassC to link to MyObjectClass so >> I can't easily change it to MyObjectClassPrefStyle and MyObjectClassAppStyle >> since then the IBOutlets would have to point to different types. > > > Just make the outlets type id and they can point to anything. IBOutlet id controllerA; IBOutlet id controllerB; IBOutlet id controllerC; In this case I'd no longer be able to get warnings like "someMethod is not defined on class controllerA" :-( _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com