我的iPhone应用程序中有以下代码,它返回模型类型
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *modelType = malloc(size);
sysctlbyname("hw.machine", modelType, &size, NULL, 0);
NSString *deviceModel = [NSString stringWithCString:modelType encoding:NSUTF8StringEncoding];
free(modelType);
但是在某些用户的设备上我没有。返回nil的设备具有位置服务。
1)什么可能导致nil返回?
2)nil是否已在监狱破损的设备上返回?
3)有没有更好的方法来检查iDevices上的模型类型?
答案 0 :(得分:2)
请改为尝试:
#import <sys/utsname.h>
- (NSString *)machine {
struct utsname si;
uname(&si);
NSString *res = [NSString stringWithCString:si.machine encoding:NSUTF8StringEncoding];
return res;
}
我实际上已将此作为类别方法添加到UIDevice
。
这给出了各种“iPhone4,1”,“iPad2,4”类型值。