[résolu]Compilation conditionelle

cyranocyrano Membre
janvier 2011 modifié dans Objective-C, Swift, C, C++ #1
bonjour,

je vous renouvele mes voeux pour l'année 2011.  :p


soit une classe declarée
<br />#import &lt;Cocoa/Cocoa.h&gt;<br /><br /><br />@class CocOthAppController;<br /><br /><br />#if (MAC_OS_X_VERSION_MAX_ALLOWED &lt;= MAC_OS_X_VERSION_10_5)<br />@interface CocOthAppDelegate : NSObject<br />#else<br />@interface CocOthAppDelegate : NSObject &lt;NSApplicationDelegate&gt;<br />#endif<br /><br />{<br />&nbsp; &nbsp; IBOutlet NSWindow *window;<br />	<br />&nbsp; &nbsp; IBOutlet CocOthAppController *appController;<br /><br />}<br /><br />@property (assign) IBOutlet NSWindow *window;<br /><br />@end<br />


en compilation 10.6 j'ai 2 warnings:

The 'appController' outlet of 'Coc Oth App Delegate' is connected to 'Coc Oth App Controller' but 'appController' is no longer defined on CocOthAppDelegate.
The 'window' outlet of 'Coc Oth App Delegate' is connected to 'Window (Board)' but 'window' is no longer defined on CocOthAppDelegate.

pige pas  :(






Réponses

  • AliGatorAliGator Membre, Modérateur
    21:15 modifié #2
    Et si tu enlèves la compilation conditionnelle, ça remarche ?

    En général ce genre de cas où InterfaceBuilder ne peux pas trouver les IBOutlets alors que pourtant tu les as définis dans le .h, ça veut dire que IB n'arrive pas à  parser le fichier .h pour en comprendre sa structure et détecter quels sont les classes déclarées et les IBOutlets déclarés dans ces classes.

    Ce qui est souvent le cas quand tu as une réelle erreur de syntaxe dans ton .h (et dans ce cas là  ton projet ne compilera même pas, forcément), mais dans ton cas si tu n'as pas d'erreur de syntaxe c'est peut-être parce que ton #if"" gène IB qui le gère mal.

    Essaye une alternative : plutôt que
    #if (MAC_OS_X_VERSION_MAX_ALLOWED &lt;= MAC_OS_X_VERSION_10_5)<br />@interface CocOthAppDelegate : NSObject<br />#else<br />@interface CocOthAppDelegate : NSObject &lt;NSApplicationDelegate&gt;<br />#endif
    
    essaye avec
    @interface CocOthAppDelegate : NSObject<br />#if (MAC_OS_X_VERSION_MAX_ALLOWED &gt; MAC_OS_X_VERSION_10_5)<br />&lt;NSApplicationDelegate&gt;<br />#endif
    
    En effet tu n'es pas obligé de tout mettre sur la même ligne, tu peux mettre tout ça sur autant de lignes que tu veux, et donc découper ça en plusieurs lignes pour mettre des #if...#endif autour même de chaque protocol que tu déclares (si tu en as plusieurs ça marche aussi donc)

    Peut-être qu'avec cette syntaxe ça gênera moins IB et que tu n'auras alors pas le problème ?
    (Si tu l'as toujours, vérifie de toute façon si sans le "#if...#endif" le pb persiste ou pas, pour valider que c'est bien le #if qui gênerait IB)
  • cyranocyrano Membre
    21:15 modifié #3

    Et si tu enlèves la compilation conditionnelle, ça remarche ?

    oui


    essaye avec
    <br />@interface CocOthAppDelegate : NSObject<br />#if (MAC_OS_X_VERSION_MAX_ALLOWED &gt; MAC_OS_X_VERSION_10_5)<br />&lt;NSApplicationDelegate&gt;<br />#endif<br />
    

    Peut-être qu'avec cette syntaxe ça gênera moins IB et que tu n'auras alors pas le problème ?


    oui impec, le parser IB doit avoir des problemes
Connectez-vous ou Inscrivez-vous pour répondre.