0

私は周りを見回して、アプリが実行されているiPhone(iPhone 3G、iPhone3GS、iPhone 4)を確認して、正確なデバイスに応じて追加の処理を実行する方法を見つけました。推奨される方法は、ほとんど次のようなものでした。

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
char *name = (char *)malloc(size);
sysctlbyname("hw.machine", name, &size, NULL, 0);
NSString *machine = [NSString stringWithCString:name];
free(name);
if([machine compare:@"iPhone3,1"]==NSOrderedSame){
    //iPhone 4
}else if([machine compare:@"i386"]==NSOrderedSame){
    //Simulator
}else{
    //iPhone 3GS, 3G...
 }
NSLog(@"Device %@", machine);

これまでは問題なく動作しましたが、X-Codeとシミュレーターを更新しました。したがって、シミュレータをiPhone 4、iPhone3GS、またはiPhone3Gとして実行することが可能です。これは実行時にどのように検出できますか?これまでの解決策や回避策はありますか?

編集:ここhttp://iphonedevelopment.blogspot.com/2009/05/device-detection.htmlのようなソリューションでさえ、シミュレーターもiPhone4になる可能性があるため、もちろん正しく機能しなくなりました。

4

1 に答える 1

1

iPhone用にコーディングしたことはありませんが、Googleで検索して、これを見つけました:Apple Developer:UIDevice Class

または、これが役立つかもしれません:iPhone-iPhoneのバージョンを検出するにはどうすればよいですか?

于 2011-02-09T08:38:57.167 に答える