ユーティリティ アプリケーション テンプレートを使用してプロジェクトを作成するだけです。このテンプレートでは、「情報ボタン」を押してビューを反転すると、ネイティブ メモリ リークが発生します。
このリークを修正する方法を知っている人はいますか??? このテンプレートから新しいプロジェクトを作成するだけで、新しいオブジェクトは追加しません。
ユーティリティ アプリケーション テンプレートを使用してプロジェクトを作成するだけです。このテンプレートでは、「情報ボタン」を押してビューを反転すると、ネイティブ メモリ リークが発生します。
このリークを修正する方法を知っている人はいますか??? このテンプレートから新しいプロジェクトを作成するだけで、新しいオブジェクトは追加しません。
それは漏れているかもしれないし、漏れていないかもしれない。割り当てのバックトレースを追加すると便利です。
ほとんどの場合、これはリークではありませんが、dyld によって隠されている一部の簿記情報がリーク/インストルメントの追跡を失います。
それが 128 バイトであり、そのうちの 1 つしかないと推測していることを考えると、http://bugreport.apple.comからバグを報告することをお勧めします。これは実際にはリークであり、アプリケーション内から修正することはほぼ不可能です。
これを行うリークを取得しました:
XCode 3.2--
ファイル、新しいプロジェクト、ナビゲーションベースのアプリケーション
名前を付ける
Build It
Run With Performance Tools-> Leaks
Instrumentsが表示されたら、Leaksをクリックします(ボックス内の4つのボックスのように見える下部の小さなアイコンをクリックする必要がある場合があります)
実行後約7秒で、リークが発生するはずです。-Malloc 128バイト、一部のアドレス、128バイト、CoreGraphics、open_handle_to_dylib_path
AppDelegateで次のコードにトレースしました。
//APPLE CODE
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}
私はnavigationControllerを分解し(別の割り当てと解放を行いました)、addSubview:アクションをコメントアウトしました-リークはありませんでした-そして、明らかに、画面は空白でした。
リークが発生したのは、addSubviewを試行するまではありませんでした。サブビューを追加する方法はたくさんあるので、それらを試してみました。それぞれがリークまたは空白の画面になりました。
お役に立てれば。
から: http://www.cocos2d-iphone.org/forum/topic/2460
「シミュレーターにはシングルトンと llvm に関連するバグがあり、Instruments によって誤って報告されています。常にデバイス自体のリークを確認してください。」
私は実際のiPodtouchでそれを試しました。リークは報告されていません。おそらく単なるシミュレーターのこと...
Leaksはopen_handle_to_dylib_path
私にとってもCoreGraphicsでフラグを立てました。ここには間違いなくフラグが立てられたものがあります。一番重いのはたったの256バイトなので、私はAppleにバグレポートを送り、それを完了と呼びました。次に、リークの構成でルールを設定して、レポートを無視することができます。
bbumが指摘したように、深刻なブードゥーが働いている可能性があります。私は、AppleがリークのあるフレームワークにQAを通過させることを真剣に疑っています。特に、再現が非常に簡単だからです。
これはバグに違いありません。Apple 独自の例である PageControl に表示されます 。
In the current SDK utility template is no leak. How did you get the impression there's a leak in the template? It's just allocating memory which is needed for the views.
A leak is memory to which no pointers exist and which cannot be freed any more.
私も同じ問題を抱えていましたが、なぜそれが起こったのかを理解することができました。そして、私はこの記事でこの問題に関する簡単な情報を与えました
あなたに役立つかもしれません。