問題タブ [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 - メモリ割り当ての問題、デバイス iOS SDK 4.1 でのクラッシュ (スレッド 0 クラッシュ)
2つの問題があります
1) 私のアプリは、最初の数回の実行でデバイス上で正常に動作します。次に、最初の画面がポップアップした後 (Tab BAr) にクラッシュします。デバイスを MAC に接続してデバイス アプリを実行すると、動作します (デバッグ モードではありません)。
クラッシュ ログを確認したところ、"EXC_BAD_ACCESS (SIGSEGV)" の cos がクラッシュし、Thread0 がクラッシュしました。エラーは、割り当て解除されたオブジェクトを解放した NSAutorelease でした。
2) シミュレーターで計測器を使用してアプリを実行しました。この関数呼び出しで多くのリークが見られます。これがサンプルコードです。Instrumentsを使用して実行すると、「setObject」行にリークが表示されます。
//クラス A - NSObject のサブクラス
/// クラス B
なぜ「setObject」でリークするのですか?? 私はすべてを正しくリリースしていますか?[NSString stringWithFormat:] だけですが、それは自動解放ですよね??
これは私を夢中にさせていますか?
2つの問題は関連していますか?? PS: SIM 上ではクラッシュせず、奇妙にもデバイスを MAC に接続してからデバイス上でテストしてもクラッシュしません (デバッグではなく、デバイス上のアプリを直接クリックします)。
編集:
}
iphone - NSOperation(s)はiOS3デバイスでのみリークします
CoreDataのインポートを処理するNSOperationsサブクラスがいくつかあります。メインスレッド以外の問題のほとんどにチェックを入れたと思います
main
メソッドで独自の自動解放プールを作成しますNSManagedObjectContext
操作ごとにを作成します
これらの操作はNSOperationQueueにロードされ、同時操作の最大数は1に設定されます。
コードはiOS4.0.1で完全に機能しますが、iOS 3.1.3デバイスでは、次のような多くのログメッセージが表示されます
NSOperationサブクラスのメインメソッド
__lookup:inContext:
方法_
他のほとんどのメソッドはメソッドをインスタンス化します。つまりthreadContext
、メソッドに似てい__lookup:inContext:
ます。インスタンスメソッドの自動解放プールを作成しないことは知っていますが、自動解放がどのように機能するかについての私の理解によれば、これらのメソッドがメインメソッド内でのみ呼び出される限り、NSAutoreleasePool
作成された後、最も外側のプール使用すべきです。NSManagedObjectContextなどのオブジェクトを怠惰に作成し、ほとんどの場合、start
メソッドを使用しません
objective-c - iPad: アニメーション付きの NSAutoreleasePool、混乱の解放
NSAutoreleasePool に関して 2 つの関連する質問があります。
プールを宣言してから排出するまでの間、アニメーションを使用できますか? 例
/li>プールが宣言された後に何かを割り当てた場合、ドレインする前に解放しますか? 排水後?それともまったくありませんか?
編集:コードの書式設定が何らかの理由で機能しません。MOD で上記のコードをフォーマットしてみてください。
objective-c - Objective C - NSthread & NSAutoreleasePool?
スレッドセーフなメソッドを作成する最良の方法は何ですか?
私は次のメソッドを持っています。非同期で呼び出したい場合があります(スレッドを介して呼び出したい)。メインスレッドで直接呼び出したい場合もあります。別のスレッドでメソッドを呼び出していない場合でも、プール (割り当て、解放) を維持することに問題はありますか?
iphone - どのくらいの頻度で NSAutoreleasePools を配置する必要がありますか?
ねえ、私はココアタッチの静的ライブラリを作成しています.そして、私はこの問題を抱えています:
Leaks インストゥルメントを使用してシミュレーターでプロジェクトを実行しています。自動解放されたオブジェクトのリークが発生しています。
NSAutoreleasePool
私は(私の方法で)一度に少なくとも1つ配置しているという事実を知っていますmain()
。私の質問は、他のものをどのくらいの頻度で配置する必要があるかです(それが重要な場合は、iPhoneとiPad用に開発しています)
更新: なんらかの理由で、コードがUIApplicationMain()
iOS 4 の呼び出しから終了せず、SIGKILL
シグナルを受け取っているだけで、自動解放プールが空になっていないことがわかりました。どうすればそれを修正できますか (アプリが を取得することを意味しますSIGKILL
)
ありがとう
objective-c - NSAutoReleaseNoPool() エラーと奇妙なバグ
次のコードがあり、いくつかの問題があります。どんな助けでも大歓迎です。コードを実行すると、エラーが発生しました。
2010-11-11 12:28:15.352 addressBook[25563:a0f] *** __NSAutoreleaseNoPool(): Object 0x100111010 of class NSCFArray autoreleased with no pool in place - just leaking
自動解放プールを追加しようとしましたが、もっとひどいエラーが発生しました (プログラムの実行がまったく停止しました)。
また、何らかの理由で、名前の入力を求められた後、何かを入力する前にすぐに住所の入力を求められます..しかし、これは追加する最初の連絡先でのみ行われます。私はこれがどのように起こるか分かりません..
などなど。
前もって感謝します。
iphone - Objective-Cカテゴリでのビッグタイムリーク
他の2つの文字列の間のすべての文字列を検索できるカスタムNSStringカテゴリを作成しました。私は今、スクリプトから多くのkBがリークしていることに気付くという問題に直面しています。以下のコードを参照してください。
私はオブジェクトをリリースするのがあまり得意ではないことを認めますが、NSAutoreleasePoolが私のために物事を処理すると信じていました。
漏れているライン:
セカンドリストを手動で解放すると、例外が発生します。
前もって感謝します!
iphone - iPhone Autoreleasepool と割り当て
autoreleasepool について読んでいますが、少し不明な点があります。autoreleasepool を使用して個別のメモリ管理を必要とするスレッドを使用する機能がいくつかあります。
次の例では正しい
これは正しいです?
またはこれ?
私の質問は、自動解放プールのスコープ内で作成された所有オブジェクトを明確に解放する必要があるか、または自動解放プールが解放されたときに処理されるかということです。
テオ
objective-c - ネストされたNSAutoreleasePool
iPad用のアプリケーションの1つで、json文字列を使用してリモートでdbを構築し、NSArrayに変換してコアデータに挿入し、iPadに約600Mbの画像をダウンロードします。これはすべてバックグラウンドスレッドで作成され、最初からメモリの問題を引き起こします。操作で3つの異なるNSAutoreleasePoolをネストし、都合の良い時点でそれぞれを解放する問題を把握しました。エラーもリークも警告もありませんでした。それが良い方法なのか、それとも何かが恋しいのかと思っていました。
ここに概略例があります(実際のコードはかなり長いです):
objective-c - メモリリークの問題NSAutoreleaseNoPool()
不変の文字列を作成しようとしています。init、alloc、またはnewで初期化していませんが、それでもメモリがリークしており、「プールが配置されていない状態でクラスNSCFStringのオブジェクト0x234b533が自動解放されました。リークしているだけです」と表示されます。これが私がやろうとしていることです。
これは漏れを残します。私もこれを試しました
しかし、これも機能しませんが、このような単純な文字列で初期化しようとすると
それは機能します、周りで何が起こっているのか見当がつかないでください。initまたはallocを使用していませんが、それでもリークがあります。誰かがこの問題を解決するのを手伝ってくれるなら私は義務付けられます
よろしく
Umair