Como usar diferentes declarações de interface em tempo de compilação sem confundir o Interface Builder

Se tenho várias compilações do meu aplicativo, versões paga e gratuita, por exemplo, e quero ter interfaces diferentes, dependendo de qual compilação, isso parece confundir o Interface Builder.

Por exemplo:

// MyViewController.h
#ifdef FREE
@interface MyViewController : NSObject <UIActionSheetDelegate, ADBannerViewDelegate>
#else
@interface MyViewController : NSObject <UIActionSheetDelegate>
#endif
{
    IBOutlet UILabel* myLabel;
}
- (IBAction) myAction:(id)sender;

Quando eu carrego o MyViewController.xib no IB, ele mostra avisos na janela Informações como "A saída 'myLabel' do 'Proprietário do arquivo' está conectada ao 'My View', mas 'myLabel' não está mais definido no MyViewController."

Existe uma maneira de fazer isso para não confundir o IB?

Suponho que a outra opção seja não #ifdef-lo e tenha uma definição para todas as compilações. O que acontece se eu compilar com meu controlador em conformidade com ADBannerViewDelegate (que requer o iOS 4) e implantar no iOS 3.2? Se isso funcionar, talvez não haja problema ...

questionAnswers(1)

yourAnswerToTheQuestion