2011-09-17 18 views

risposta

35

Utilizzare obiettivi. Questo è esattamente ciò per cui sono.

Learn more about the concept of targets here.

In genere, la maggior parte dei progetti ha una destinazione singola, che corrisponde a un prodotto/applicazione. Se si definiscono bersagli multipli, è possibile:

  • includono alcuni dei tuoi file di codice sorgente (o forse tutti) in entrambi gli obiettivi, alcuni in un obiettivo e un po 'nell'altra
  • si può giocare con impostazioni di generazione di compilare i due obiettivi utilizzando impostazioni diverse.

Ad esempio si può definire precompilatore macro per un obiettivo e altre macro per l'altro (diciamo OTHER_C_FLAGS = -DPREMIUM in target "PremiumVersion" e OTHER_C_FLAGS = -DLITE per definire la macro LITE nel target "LiteVersion") e poi includi codice simile nella tua fonte:

-(IBAction)commonCodeToBothTargetsHere 
{ 
    ... 
} 

-(void)doStuffOnlyAvailableForPremiumVersion 
{ 
#if PREMIUM 
    // This code will only be compiled if the PREMIUM macro is defined 
    // namely only when you compile the "PremiumVersion" target 
    .... // do real stuff 
#else 
    // This code will only be compiled if the PREMIUM macro is NOT defined 
    // namely when you compile the "LiteVersion" target 

    [[[[UIAlertView alloc] initWithTitle:@"Only for premium" 
     message:@"Sorry, this feature is reserved for premium users. Go buy the premium version on the AppStore!" 
     delegate:self 
     cancelButtonTitle:@"Doh!" 
     otherButtonTitles:@"Go buy it!",nil] 
    autorelease] show]; 
#endif 
} 

-(void)otherCommonCodeToBothTargetsHere 
{ 
    ... 
} 
+1

Se vi siete abituati, pensate agli obiettivi come a diversi makefile. Hanno lo stesso ruolo. – Cyrille

+2

Questo è enorme, grazie. Per fare in modo che funzioni correttamente, dovevo fare una copia target, quindi aggiornare le impostazioni di destinazione per utilizzare un diverso Info.plist per il mio nome bundle ecc ... – Slee

+4

Nota che se aggiungi ulteriori file al tuo progetto, fai attenzione per aggiungere il file a entrambi i target e non solo a quello attivo: quando aggiungi il file, nella finestra di dialogo che appare per chiedere se vuoi copiare i file o meno, hai un elenco di target e caselle di controllo di fronte a ciascuno di essi . (Lo stato delle caselle di controllo viene salvato in modo tale che sarà probabilmente necessario verificarlo solo una volta) – AliSoftware

Problemi correlati