0

アプリを Instruments でテストしました。リークは見つかりませんでしたが、アプリがクラッシュしました (すぐではありません - [ユーザーのアクティビティによって異なります] 作業から 20 分後)。割り当てを表示しました。それは報告します:

Category | Live Bytes | Count Live | # Living | # Transitory | Overall Bytes | # Allocations (Net / Overall)
Malloc 16 Bytes | 235088 | 14693 | 0 | 235088 | 14693 | 1.00

すべてのレコード (「Malloc 16 Bytes」の詳細情報を表示した場合) は、1 つのオブジェクトに対してのみ作成されます。

# | Object Address | Category | Creation Time | Live | Size | Responsible Library | Responsible Caller
0 | 0x104b50 | 817461248 | • | dyld | _dyld_start

(...そして、もちろん # を除いて、同じフィールド データを持つ 14693 レコード)。

スタックトレース:

   0 CoreFoundation __CFAllocatorSystemAllocate
   1 CoreFoundation CFAllocatorAllocate
   2 CoreFoundation __CFGetConverter
   3 CoreFoundation CFStringEncodingGetConverter
   4 CoreFoundation CFStringGetSystemEncoding
   5 CoreFoundation __CFStringInitializeSystemEncoding
   6 CoreFoundation __CFInitialize
   7 dyld ImageLoaderMachO::doImageInit(ImageLoader::LinkContext const&)
   8 dyld ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&)
   9 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  10 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  11 dyld ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&)
  12 dyld dyld::initializeMainExecutable()
  13 dyld dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**)
  14 dyld dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*)
  15 dyld _dyld_start

ここにすべてのコードを貼り付けることはできません (アプリは数行ではありません)。しかし、アドバイスをお願いします - メモリリークや問題をどこで探すべきか。そうしないと...

4

1 に答える 1

1

私見、あなたの最優先事項は、アプリケーションを実行できるようにすることです。コードの一部にコメントを付けて、問題の場所を特定してください。アプリがクラッシュしなくなった場合、問題はコメントした部分にあり、それでもクラッシュする場合は別の場所にあるはずです。バグを修正するまで、手順を繰り返します。

アプリを実行したら、リークを見つけたり、パフォーマンスを改善したりできます。

于 2010-07-23T10:24:42.127 に答える