Was ist der beste Weg, wenn der Prozessor-Typ zu finden PPC oder Intel in Cocoa ist? (Muss ich Kohlenstoff benutzen?)

StackOverflow https://stackoverflow.com/questions/1619561

Frage

Ich brauche es als String erhalten an anderer Stelle im Programm zu verwenden, bin ich über Compiler-Einstellungen keine Sorgen.

Ich fand HowToGetHardwareAndNetworkInfo auf CocoaDev, aber es schien ein wenig intensiver, wenn alles, was ich wollte PPC vs. Intel wissen ist.

War es hilfreich?

Lösung

Wenn Ihre Anwendung gebaut Fett (dh nicht auf Intel unter rosetta ausgeführt wird), Sie brauchen keine Anrufe zu tätigen, diese Informationen zu erhalten, weil verschiedene Code ausgeführt werden, je nachdem, welche Architektur Sie ist auf . Somit ist die Information zum Zeitpunkt der Kompilierung zur Verfügung:

#if defined __i386__ || defined __x86_64__
NSString *processorType = @"Intel";
#elif defined __ppc__ || defined __ppc64__
NSString *processorType = @"PPC";
#elif defined __arm__
NSString *processorType = @"ARM";
#else
NSString *processorType = @"Unknown Architecture";
#endif

Wenn Sie wirklich die Bestimmung zur Laufzeit aus irgendeinem Grunde perversen tun wollen, sollten Sie in der Lage sein, die sysctlbyname Funktion zu nutzen, in <sys/sysctl.h> definiert.

Andere Tipps

Wie wäre es uname?

struct utsname uts;
uname(&uts);
printf("%s\n", uts.machine);

Wurde wie PPC oder i386 oder x86_64 in Abhängigkeit von der Maschine gedruckt werden.

Der einzige Teil dieses Chaos, das Sie wirklich interessiert, ist hier:

host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);

Sehen Sie Mach-Header in Kernel.framework für Struktur und konstanten Definitionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top