問題タブ [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.
iphone - 実行ループの終了 -- プールの自動解放リカバリ
私が理解しているように、自動解放されたプールが解放されると、自動解放されたオブジェクトは消去されます。これで、実行ループの最後に自動解放プールが解放されます。
私の質問は、私のクラスでカスタム自動解放プールを作成しておらず、そのクラスの一部のオブジェクトで自動解放メソッドを呼び出していない場合、それらのオブジェクトはどの時点で回復されるのでしょうか? 「実行ループの終わり」は「アプリケーションの終わり」を意味しますか?
ios4 - NSAutoreleaseNoPool():クラスNSConcreteMutableDataのオブジェクト0x66ad9d0が自動リリースされ、プールが配置されていません-リークしているだけです
プロジェクトでスレッド操作を実行しようとしています。物事はうまくいっていますが、私はNSAutoreleaseNoPool(): Object 0x66ad9d0 of class NSConcreteMutableData autoreleased with no pool in place - just leaking
自分のNSLOGにうんざりしています。
私のコードは..
私のログメッセージは次のとおりです。
等々..
私が欠けているもの..グーグルをたくさんした後、私は新しいプールを作成することだけを見つけました..しかし機能しませんでした..
前もって感謝します..
iphone - navigationItem の barButtonItem を変更する
私はUIViewControllerを持っています。「リロード ボタン」として、navigationItem の rightBarButtonItem を使用します。リロード ボタンが押されると、アプリがリロードするデータを処理している間、leftBarButtonItem を使用してアクティビティ インジケーターを表示します。ここまでは大丈夫です。
ここにいくつかのコードがあります:
ここで、ロジックを少し変更するように求められました。
rightBarButtonItem はそのままです。leftBarButtonItem はアクティビティ インジケーターを表示するためにまだ存在しますが、処理がない場合は、別のボタンを表示する必要があります。このボタンを押すと、新しいビューが表示されます (何らかの情報が表示されます)。
だから私はこれらの変更を行いました:
動作しているように見えますが (情報ボタンがあり、「リロード」を押すと、処理が完了するまで activityIndicator が代わりに表示されます)、デバッガーコンソールで次のように表示されます。
私は何を間違っていますか?誰かが助けてくれることを願っています...
よろしくお願いします。
iphone - 自動解放されたオブジェクトの LifeTime
ここで、文字列 str の寿命は何ですか。strのretainCountがゼロになるのはいつですか。実行ループの最後に保持カウントがゼロになることはわかっています。runloop の終了とは、returnString を呼び出している関数の終了を意味しますか。そうでない場合、ランループが何を意味するのか、ランループの終わりが何を意味するのか。
このタイプのリリースは正しいですか?
iphone - AutoreleaseFreedObjectの問題
アプリケーションウィンドウが最初に読み込まれ、次の警告が表示されます。
*** __NSAutoreleaseFreedObject(): release of previously deallocated object (0x583e880) ignored
2回目にアプリがクラッシュして、EXC_BAD_ACCESSが発生します。私はどこが間違っていますか?
PSゾンビを有効にしようとしましたが、同じエラーが発生します...
objective-c - Objectivecスレッド内のスレッド変数の有効期間
-mainメソッド内で使用するNSOperationがあります[NSThread detachNewThreadSelector:@selector(aMethod:) toTarget:self withObject:anArgument];
aObject
(私のNSOperationサブクラスのインスタンス変数)は、-mainメソッド内に返される自動解放された配列のオブジェクトへの弱参照です。
NSThreadのdetachNewThreadSelectorメソッドがwithObject self
:anArgument
を保持していることは知っていますが、aObjectはどうなりますか?デタッチされたスレッド(aMethod :)の実行中にそれが存在することは確かですか?自己はによって保持されdetachNewThreadSelector
ますが、これは、メインスレッドのプールが保持されているために解放が遅れ、したがってclients
が存在し、したがってが存在することを意味しaObject
ますか?
または、-main
(NSOperation)スレッドは実行を終了し、 -aMethod
(NSThread)が終了する前に解放されるため、そこで使用するのは安全ではaObject
ありませんか?
本当の問題は次のとおりです。[NSThread detachNewThreadSelector:@selector(aMethod:) ...toTarget:self ...]
スレッド内から呼び出す場合、最後のスレッドは、自動解放されたインスタンス(clients
配列)が()で安全に使用できるようaMethod
に保持されself->aObject
ますか(弱い参照を介して)?
iphone - NSAutoreleasepoolのリーク-理由がわかりませんか?
私はこのコードを持っています:
そしてそれは次のエラーを生成します:
2011-06-17 03:10:30.768 CHARLIE [2456:6c03] * __NSAutoreleaseNoPool():クラス__NSArrayIのオブジェクト0x703d0f0が、プールが配置されていない状態で自動リリースされました-リークしているだけです
なぜ漏れているのかわかりませんが、誰かがこれを修正する方法を説明できますか?
どうもありがとう、
ジャック
objective-c - 自動解放プールを使用する理由
mainメソッドで作成された自動解放プールがあり、自動解放メッセージを受信するすべてのオブジェクトがこのプールに格納され、プールがなくなると解放されることを知っています。
ただし、メモリリークやアプリのクラッシュを回避するために、オブジェクトの自動解放を回避すると常に言われています。
では、なぜ、どのような条件でautoreleasepoolを使用する必要があるのでしょうか。
Appleのドキュメントでは、スレッドを使用しているときにそれらを使用する必要があると示唆されているため、スレッドの最初に自動解放プールを作成し、スレッドの最後にそれを排出する必要がありますが、完全に自動解放オブジェクトを作成していない場合はどうなりますかスレッドの場合、その状態では、スレッドの先頭に自動リリースプールを作成する必要もあります。
私の混乱を片付けてください。ありがとう。
objective-c - 自動解放されたオブジェクトを非自動に変更する
自動解放されたオブジェクトを自動解放されていないオブジェクトに変更する方法はありますか?
NSCoder の decodeObjectForKey は、自動解放されたオブジェクトを返します。これは、アプリ内のいくつかのメモリ システムを台無しにします。戻り値を自動解放されていないオブジェクトに変更するにはどうすればよいですか?
保持を実行できることはわかっていますが、解放すると、自動解放されたままになります。一方、自分でメモリを管理したい。