4

iOSアプリにはメモリ警告レベル1とレベル2があります。問題は、すべての iPad デバイス (iPad 1 から iPad 4、mini まで) についてです。警告を送信するための応答しきい値はいくらですか。たとえば、iPad1 の場合、それは 100 MB ですか?

ありがとう


また、メモリ警告を受け取ったときに使用されたメモリを印刷していました。

#import "mach/mach.h"
-(void) report_memory {

    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        DLog(@"Memory in use (in MB ): %u", info.resident_size/1024/1024);
    } else {
        DLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}
4

2 に答える 2

5

主にiOSのバージョン間で変更される可能性があるため、Appleによって正式に文書化されているとは思いませんが、これらは「iPhoneとiPadのcocos2dゲーム開発を学ぶ」の本に記載されている数値です。

+-----------------------------------------------------------------+  
| Installed Memory |  Available Memory | Memory Warning Threshold |
+-----------------------------------------------------------------+  
| 128 MB           |  35-40 MB         |  20-25 MB                | 
| 256 MB           |  120-150 MB       |  80-90 MB                | 
| 512 MB           |  340-370 MB       |  260-300 MB (estimated)  |
+-----------------------------------------------------------------+
于 2013-03-20T09:01:52.297 に答える
3

練習と記憶から...iPad1は約16Mbでレベル1をトリガーし、おそらく約32MBでレベル2になります。iPad 2/3 / miniは、約50Mbから64Mbまでは問題ないようです。iPad 4決定的な結果は得られていませんが、スペックからすると、物事が文句を言う前に最大で約100〜128Mbになると予想していました。

これは、少なくともテスト中に機器で観察したことです。マクロを実行してデバイスの種類を検出し、クォーツで描画されたアイテムや重い画像などを無効にすることで、古いデバイスをサポートするために適切にフォールバックしました。

繰り返しになりますが、これらはどの仕様からも難しい数字ではなく、テストからの私の発見です。

たとえば、iPad1を検出するためにアプリデリゲートで使用するクラスメソッドを次に示します...

+ (BOOL)isiPad1 {
  struct utsname platform;
  int rc = uname(&platform);
  if(rc == -1) return NO;
  return !strcmp("iPad1,1", platform.machine);
}
于 2013-03-20T08:57:45.243 に答える