Ich habe die folgende UIDevice-Kategorie basierend auf verschiedenen Quellen geschrieben. Ich habe die platformCode
-Methode aktualisiert, so dass sie weniger niedrig ist, als man sieht.
Das funktioniert perfekt, aber die Methode platformCode
ist niedrig. Weißt du, ob diese Art von Anruf mit Cocoa Touch-Code ersetzt werden kann? Hier ist der relevante Code:
UIDevice_enhanced.h
%Vor%UIDevice_enhanced.m
%Vor%Dies kann als eine "objektive-c" -Methode betrachtet werden:
%Vor% Dies wäre eine obj-c-Version von utsname
machine
(aus dieser Zeile: NSString* platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
).
utsname
:
Der Header
<sys/utsname.h>
definiert die Struktur utsname, die enthält mindestens die folgenden Mitglieder:
char sysname[]
Name dieser Implementierung des Betriebssystems
char nodename[]
Name dieses Knotens innerhalb einer Implementierung abhängig Kommunikationsnetzwerk
char release[]
aktuelles Versionslevel von diese Implementierung
char version[]
aktuelle Version dieser Version Release
char machine[]
Name des Hardwaretyps, auf dem der System läuft
UIDevice
Klassenreferenz :
systemName
Der Name des Betriebssystems, das auf dem Gerät ausgeführt wird repräsentiert durch den Empfänger. (schreibgeschützt)
@property (nonatomic, readonly, retain) NSString *system
Da jedoch systemName nur @ iPhone OS zurückgibt, müssen Sie c-code verwenden, um die tatsächliche Modellnummer des Geräts zu erhalten. Hier ist ein anderer Weg, es zu tun:
%Vor%Sie müssen den C-Aufruf der unteren Ebene verwenden, um den infoString zu erhalten. Für meine Zwecke habe ich eine winzige Objective-C-Bibliothek geschrieben, die das abstrahiert und eine Objective-C-Schnittstelle darstellt.
%Vor%Sie können es auf github bekommen, wenn Sie möchten: GBDeviceInfo