2011-08-04 10 views
6

Qual è il modo migliore per implementare la compatibilità con le versioni precedenti, quando si crea un'applicazione per Mac OS X 10.7 ma anche compatibile con 10.6?Compatibilità con le versioni precedenti di Mac OS X App 10.6 e 10.7 durante l'utilizzo di NSPopovers

Ho un'applicazione che utilizza un NSPopover quando il client è 10.7 e un NSMenu quando il client è 10.6. Il problema è che quando si avvia l'applicazione su una macchina 10.6, l'app si arresta in modo anomalo con un'eccezione "simbolo non trovato", dicendo che (tipo di) "_ OBJC $ _NSPopover non è stato trovato in AppKit". Devo usare id per tutta l'applicazione per le nuove funzionalità?

risposta

2

si può ottenere l'oggetto di classe per NSPopover utilizzando la funzione NSClassFromString() questo restituisce un oggetto di classe con è possibile utilizzare per creare istanze per esempio

id thePopover = [[NSClassFromString(@"NSPopover") alloc] init]; 

un'altra possibilità è quella di avere due file pennino separati uno per 10.6 e uno per 10.7, il pennino non deve essere l'interfaccia completa, solo la parte che contiene NSPopover e quindi caricare il file di pennino appropriato in fase di esecuzione.

Problemi correlati