0

私の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になります。nilを返すデバイスには、位置情報サービスがあります。

1)nilが返される原因は何ですか?

2)刑務所が壊れたデバイスでnilは返されますか?

3)iDevicesでモデルタイプをチェックするためのより良い方法はありますか?

4

1 に答える 1

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」タイプの値が得られます。

于 2013-03-09T22:57:01.347 に答える