Re: Problem with compiler directives
Re: Problem with compiler directives
- Subject: Re: Problem with compiler directives
- From: Christiaan Hofman <email@hidden>
- Date: Fri, 01 Apr 2011 23:03:31 +0200
On Apr 1, 2011, at 22:32, Laurent Daudelin wrote:
> On Apr 1, 2011, at 13:30, Laurent Daudelin wrote:
>
>> On Apr 1, 2011, at 00:34, Robert Purves wrote:
>>
>>> Laurent Daudelin wrote:
>>>
>>>> In my deployment configuration, I have the SDKROOT defined with a build setting condition:
>>>>
>>>> x86_64 = macosx10.6
>>>> i386 = macosx10.5
>>>> ppc = macosx10.5
>>>>
>>>> Now, when I build and omit the <NSToolbarDelegate>, when the compiler compiles the x86_64, it complains with a warning that my ToolbarController doesn't implement protocol "NSToolbarDelegate".
>>>>
>>>> So, to get around this annoying warning, I did this in my ToolbarController.h file:
>>>>
>>>> #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
>>>> @interface ToolbarController : NSObject <NSToolbarDelegate>
>>>> #else
>>>> @interface ToolbarController : NSObject
>>>> #endif
>>>>
>>>> I'm obviously missing something because when the compiler compiles the ppc binary, it gives me an error that it can't find protocol NSToolbarDelegate:
>>>
>>> Try:
>>>
>>> #if defined MAC_OS_X_VERSION_10_6 && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
>>
>> I think I found the problem with my outlets not being recognized anymore in Interface Builder.
>>
>> That was an old controller class still using the older syntax for defining outlets:
>>
>> IBOutlet id mainWindow;
>>
>> When I convert it to:
>>
>> NSWindow *mainWindow;
>>
>> and add the proper
>>
>> @property (assign) IBOutlet NSWindow *mainWindow;
>>
>> Then all the outlets are recognized and parsed by IB except the first one.
>>
>> What can I do to fix this?
>>
>> -Laurent.
>
> Maybe I should have mentioned that the problem is caused when I try to put the @interface declaration between compiler directives:
>
> #if defined MAC_OS_X_VERSION_10_6 && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
> @interface FSController : NSObject <NSOpenSavePanelDelegate>
> #else
> @interface FSController : NSObject
> #endif
>
> Any way around that problem?
>
> -Laurent.
> --
> Laurent Daudelin
> AIM/iChat/Skype:LaurentDaudelin http://www.nemesys-soft.com/
> Logiciels Nemesys Software email@hidden
>
The problem is almost certainly occurring because IB does its own parsing of the headers, and it does not do precompiling, just trying to find the expected directives. So it fails to figure out the ivar declarations because it's confused.
You can simply fix it by using the method I posted earlier, using default delegate protocols for 10.5.
Christiaan
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden