iphone型号返回零?

时间:2013-03-09 22:54:03

标签: iphone ios core-location cllocationmanager

我的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上的模型类型?

1 个答案:

答案 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”类型值。