Voglio ottenere la versione del sistema OS X, come ad esempio: 10.5.4, 10.4.8, ecc. Voglio averlo nella mia app, come faccio? Grazie!Come ottenere la versione del sistema OS X?
risposta
È possibile utilizzare Gestalt:
SInt32 version = 0;
Gestalt(gestaltSystemVersion, &version);
BOOL leopard = (version >= 0x1050);
if (leopard)
{
//draw it this way
}
else
{
//draw it that way
}
tenere a mente se si sta controllando se un metodo è disponibile o meno, è meglio verificare che l'utilizzo direttamente respondsToSelector :.
Si noti che gestaltSystemVersion è scoraggiato dal 10.4 in favore di gestaltSystemVersionMajor, gestaltSystemVersionMinor e gestaltSystemVersionBugFix, a causa del limite di 1 cifra. 10.4.10 e .11, ad esempio, sono impossibili da rilevare usando il tuo codice. – smorgan
Siccome Gestalt è deprecato in 10.8, esiste un modo alternativo che funzioni da 10.6 a 10.8? – adib
Questa risposta ora è errata, poiché gestaltSystemVersion non può rappresentare 10.10. –
Ancora, è possibile utilizzare Gestalt. Guarda la documentazione per maggiori informazioni; in particolare, ti consigliamo di passare i gestaltSystemVersionMajor
, gestaltSystemVersionMinor
, e gestaltSystemVersionBugFix
costanti nella parte di "versione del sistema Costanti" della Gestalt Manager Reference documentation
C'è anche un cacao involucro intorno alla Gestalt chiama altri hanno detto in Google Toolbox per Mac: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMSystemVersion.h
Meh, sembra più un problema di quanto valga la pena per un semplice controllo. Forse se stavo già usando GTM, ma è più semplice controllare 'gestaltSystemVersionMinor'. –
potete leggere l'elenco delle proprietà a "/System/Library/CoreServices/SystemVersion.plist ed estrarre la 'chiave ProductVersion', questo è come il programma di installazione di OS X fa Ecco un esempio:.
NSString *versionString;
NSDictionary * sv = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"];
versionString = [sv objectForKey:@"ProductVersion"];
In alternativa, il comando swvers -productVersion
farà lo stesso.
Questo funziona, ma comporta l'I/O del disco e non è necessario. Gestalt è un'alternativa molto migliore (e più veloce). –
Ma deprecato dal 10.8 e sembra che questo sia il modo migliore attualmente disponibile. Vedere questa domanda: http://stackoverflow.com/questions/11072804/mac-os-x-10-8-replacement-for-gestalt-for-testing-os-version-at-runtime – hobotron
Grazie, la migliore soluzione I Ho trovato dal 10.8 –
NSString *osver()
{
SInt32 versionMajor=0, versionMinor=0, versionBugFix=0;
Gestalt(gestaltSystemVersionMajor, &versionMajor);
Gestalt(gestaltSystemVersionMinor, &versionMinor);
Gestalt(gestaltSystemVersionBugFix, &versionBugFix);
return [NSString stringWithFormat:@"%d.%d.%d", versionMajor, versionMinor, versionBugFix];
}
Proprio quello che stavo cercando. – David
Purtroppo, Gestalt è obsoleto dal 10.8. –
-[NSProcessInfo operatingSystemVersionString]
è leggibile e localizzato. Appropriato per la visualizzazione all'utente o l'utilizzo in e-mail di bug e simili, ma non appropriato per l'analisi.
+1: molto bello. Ho suggerito una leggera modifica di menzionare il metodo di classe '+ processInfo' per ottenere un'istanza per chiamare' -operatingSystemVersionString' su. – ArtOfWarfare
è possibile chiamare [NSProcessInfo operatingSystemVersionString] dal codice C++? – Vlad
No. Dovresti creare un metodo wrapper per chiamarlo dal C++ e dovrai aggiungere qualche Objective-C al tuo programma per farlo. Puoi creare quel file Objective-C++, puoi usare Gestalt, puoi usare system() per chiamare swvers -productVersion dalla riga di comando, o puoi leggerlo dal file system (come accennato altrove in questa pagina). Dipende solo dalla tua situazione e da cosa stai cercando di fare. – brant
uso questo metodo verrà restituito versione di Mac OS X
+(SInt32) OSVersion;
{
SInt32 osxMinorVersion;
Gestalt(gestaltSystemVersionMinor, &osxMinorVersion);
return osxMinorVersion;
}
Dopo 10_10, 8_0 sono stati presentati il meglio & modo più semplice sarebbe
[NSProcessInfo processInfo].operatingSystemVersion
che restituirà
NSOperatingSystemVersion
struct
con tutta 3 numeri.
- 1. Ottenere la versione del sistema operativo Mac OS X utilizzando standard di C
- 2. Cabal flag "os" con la versione del sistema operativo
- 3. Versione OS X di bringSubviewToFront :?
- 4. Node.js per ottenere/determinare la versione del sistema operativo
- 5. Catturare l'uscita audio del sistema Mac OS X con Python
- 6. jQuery - rilevamento del sistema operativo e del sistema operativo versione
- 7. Come ottenere l'attuale versione del sistema operativo di Windows Phone?
- 8. Rileva la versione del sistema operativo esatta dal browser
- 9. Come gestire la modifica del font di sistema tra OS X 10.9 e 10.10
- 10. Come specificare obiettivo Mac OS X versione utilizzando qmake
- 11. Ottenere versione apparecchio OS Android di programmazione
- 12. Versione Python in dotazione con Mac OS X Snow Leopard?
- 13. Come ottenere la versione del framework ionico?
- 14. versione di compatibilità di libcurl dylib per Mac OS X
- 15. OS X: Rileva eventi keyDown a livello di sistema?
- 16. Come disinstallare tutte le versioni python e utilizzare la versione di sistema predefinita di OS X 10.10?
- 17. Ottenere percorso del desktop per l'utente corrente su OS X
- 18. Come rilevare la versione di Mac OS usando Python?
- 19. Simulazione dell'input del mouse in modo programmatico in OS X
- 20. Come ottenere la posizione del cursore rispetto alla finestra in Mac OS X?
- 21. sistema proxy non funziona su OS X Mavericks
- 22. Ottenere la versione del sistema operativo Windows a livello di programmazione
- 23. C'è un modo per iniettare un sistema di sistema OS X a livello di sistema?
- 24. Come ottenere posizione, larghezza e altezza del Dock di Mac OS X? Cocoa/Carbon/C++/Qt
- 25. Come ottenere il numero di versione del SO?
- 26. OS X il check-in Cocoa
- 27. ottenere la versione del sistema operativo Android del dispositivo collegato tramite adb
- 28. Come si installa/scarica una versione specifica del database cassandra distribuito in mac os x?
- 29. Pre-Amplify Audio OS X
- 30. Trova la prima versione del pacchetto con la funzione X
@JakePetroules come questo potrebbe essere un duplicato se è stato chiesto 7 anni fa e pseudo originale - 4 anni fa! Guarda le date per favore. –
Poiché l'altra domanda contiene la risposta corretta come accettata. Questo contiene tutte le risposte errate o obsolete tranne una che è molto in basso. Stack Overflow è un wiki per le persone a trovare risposte, non un registro storico di domande e risposte. –