問題タブ [nsautoreleasepool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
716 参照

cocoa-touch - UIImage imageWithDataリーク(GCD)

こんにちは私は次のコードでInstrumentから報告されたリークを受け取っています。

Leaksは、私の画像= [UIImage imageWithData:imageData]がリークしていると報告していますが、その理由は何ですか?自動リリースされたUIImageオブジェクトのNSAutoreleasePoolが必要ですか?

ところで、それが問題なら、私は__block UIImage * image=nil;と宣言しました。上記のコードを入力する前に、ImageCacheで画像をチェックするためです。

0 投票する
1 に答える
549 参照

macos - OSX 上の SDL + OpenGL: NSAutoreleaseNoPool()

私は OpenGL と SDL を使用していくつかのクロスプラットフォーム コードに取り組んでいますが、すぐに Mac OSX で問題が発生しました。

参考までに、GitHub のコードベースは次のとおりです: https://github.com/GrooveStomp/platformer

また、表示されているエラーを同じレポにプッシュしました: https://github.com/GrooveStomp/platformer/blob/master/errors.txt

今、私が行った読書から、SDL は単に Mac OSX の Objective-C Cocoa レイヤーをラップしているように見えます。プログラム全体をラップするには、独自の NSAutoreleasePool を宣言する必要があります。あれは正しいですか?

このリンクに出くわしました: http://sourceforge.net/apps/wordpress/paintown/2010/12/26/sdl-and-osx/著者がソースからインストールし、問題はありません。ビルド時に「-framework OpenGL」を指定する必要があるため、作者のステップ#3と同等であると想定するHomebrewを使用してインストールしました。

[編集]

したがって、NSAutoreleaseNoPool() の問題は、次の 3 つの手順に従って処理する必要があることがわかります。

  1. main() には次のシグネチャが必要です: int main(int argc, char * argv[])
  2. main() があるソース ファイルに #include <SDL.h> を追加します。
  3. -lSDLmain でリンク

その結果、SDL は独自の main() を NSAutoreleasePool でラップし、メイン全体をラップします。ただし、これを行うと、次のエラーが表示されます。

https://github.com/GrooveStomp/platformer/blob/master/make_errors.txt

0 投票する
2 に答える
468 参照

iphone - 自動解放されたオブジェクトを作成していない場合、自動解放プールは必要ですか?

つまり、自動リリースされたオブジェクトを作成していないと絶対に確信している場合は、もちろん作成しません。私の本当の懸念は、私が理解していない内部に何か他のものがあるかどうかです。関数を呼び出すバックグラウンドスレッドがあります。とにかく、常に自動解放プールを作成する必要がありますか?

0 投票する
1 に答える
725 参照

objective-c - nsautoreleasepoolスコープ内のreturnステートメント

以下のシナリオがあるとしましょう:

このようにプールブロック内から戻るのは正しいですか?

0 投票する
2 に答える
2125 参照

iphone - iOS detachNewThreadSelector のリーク

いくつかの画像を読み込んでいる UIScrollView があります。画像に効果を適用することがあり、プリロードを行うのに少し時間がかかることがあるので、detachNewThreadSelector を使用して別のスレッドでこれを行うことにしました。これにはgitHubにあるKTPhotoBrowserを使用しています。

基本的に、私はそのように機能しています。

私はこれを使用して呼び出します

これを実行すると、リークが発生しているように見えます。loadPhoto メソッドのコードの周りに AutoRelease プールを配置する必要があるかどうか疑問に思い始めています。このコードに興味がある場合は、以下に含めます。

どんなアイデアでも大歓迎です。

0 投票する
3 に答える
1077 参照

objective-c - NSBlockOperationおよびNSAutoreleasePool

通常、サブクラスを作成するときは、メソッドでのNSOperation作成と解放を担当します。NSAutoreleasePool-main

を使用する場合NSBlockOperation、ブロックに自動解放プールを作成する必要がありますか?

0 投票する
2 に答える
619 参照

iphone - NSAutoreleasepool: iPhone アプリのメモリ管理の問題

これは、コンソールで警告として表示されるものです。クラッシュは発生しませんが、メモリ管理の問題のようです。

何が間違っている可能性がありますか?

セグメント化されたコントロールを自動解放していません。

0 投票する
1 に答える
1264 参照

iphone - ゲームでの画面の読み込み(移行中にアニメーションが途切れないようにする)

私はcocos2dゲームを持っています。ゲームがロードされて実行されると、55〜60fpsで実行されます。

ただし、メニューとゲームの両方にスプライトシート(それぞれ1つ)を使用しているため、ゲームをロードするときにクロスオーバーのポイントがあり、メモリにロードされる大きなpngが多すぎるため、メモリ警告が発生します。

ロードのために移行する単純なCCSceneを実装しました(軽量で、メインのゲームシーンのロードに進む前にメニューのロックを解除できます)。

これは見事に機能します。しかし、私は小さな障害にぶつかりました。ロード画面で、ロードという単語の横に主人公が回転しています(何かが起こっていることを示すため)。

NSThreadを使用してゲームを別のスレッドにロードし、ロードシーンのアニメーションを妨げられることなく続行できることを発見しました(これにより、非常に快適なユーザーエクスペリエンスが実現しました)。

ただし、5〜6 / 10回、このエラーメッセージが表示されます。

このコードを使用してゲームをロードしています。

ボタン内-

新しいスレッドで実行されるメソッド-

何が起こっているのかを防ぐ方法についてのアイデアはありますか?

NSLockは、gameSceneがgamesheet.plist(スプライトシートと座標内の個々の画像のフレーム名)を読み込もうとしたときに発生します。

0 投票する
3 に答える
1713 参照

ios - NSAutoreleasePool。新しい自動解放プールを作成するのが適切なのはいつですか?

iOS/CocoaTouch では、メソッド内で NSAutoreleasePool の新しいインスタンスを作成するコードをよく見かけます。私は最近、NSOperation 内で 1 つを見ました。

NSAutoreleasePool の新しいインスタンスを設定するための基本ルールは何ですか? main.m で作成された既存のリリース プールに単純に依存するよりも、なぜこれが望ましいのでしょうか?

ありがとう、
ダグ

0 投票する
5 に答える
3947 参照

iphone - 「クラス NSCFString のオブジェクト 0x84be00 は、プールが配置されていない状態で自動解放されました - ただリークしています」-しかし、アプリの最初の行にあります!

私の iPhone アプリでは、コードがまったく呼び出される前に、アプリの最初の部分でコンソールに 3 つの奇妙な警告が表示されます。

進行状況インジケーターを表示するために、多くの場所で MBProgressHUD を使用します。これは、進行状況インジケーターを表示するときに新しいスレッドをスローするため、この問題の他の議論の一部が指摘しているものです。しかし、最も奇妙なことは、これらが main() 関数の開始前にスローされるように見えることです。

コードの最初の にブレークポイントを設定すると、NSAutoreleasePoolその行が実行される前に、この警告が表示されます。おそらく、この時点までに独自のコードを実行していない場合、エラーの原因は何ですか?