問題タブ [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.
objective-c - NSAutoreleasePool 自動解放プールはどのように機能しますか?
私が理解しているように、alloc、new、またはcopyで作成されたものはすべて手動でリリースする必要があります。例えば:
私の質問ですが、これは同じように有効ではないでしょうか?:
cocoa-touch - 自動リリースによって実際にCocoaTouchがリリースされるのはいつですか?
autorelease
iOSでは注意が必要だと思います。呼び出し元が必要とするオブジェクトを返すメソッドがあるalloc
ので、この状況では、私が理解しているようautorelease
に、オブジェクトが戻る前に、呼び出し先のオブジェクトに送信する必要があります。
これは問題ありませんが、コントロールが電話に戻ると(つまり、ボタンのクリックが処理された後)、自動解放プールが解放されたように見えます。これが想定されていることだと思いますが、この状況のベストプラクティスは何でしょうか。
オブジェクトが解放されないように呼び出し元からメッセージを送信してretain
から、で明示的に解放することにしましたdealloc
。
これが最善のアプローチですか?
objective-c - GNUStepNSAutoreleasePoolの非互換性
別のStackOverflowの投稿によると、drain
メッセージはAppleのみの呼び出しです。
交換drain
しても大丈夫release
ですか?Linux(現時点ではUbuntu)で実行するObjective-Cアプリケーションを移植しようとしています。始める前から諦めるべきですか?(私はすでにNSURLConnection
仕事をしようとして問題を抱えています)
iphone - iPhone dev マルチスレッド、NSAutoreleasePool
真夜中までカウントダウンし、ビープ音を何度も再生し、時間を示すラベルを点滅させる単純なアプリケーションがあります。したがって、ラベルの点滅は NSTimer を使用し、ビープ音は独自のスレッドで発生するため、純粋な C 関数 (システム サウンド ID 完了コールバック用) は [NSThread sleepForTimeInterval:...]; を使用できます。アラームのビープ音を再生する間に少し待ちます。そのため、実行中に自動解放プールがなく、リークするという 2 つのエラー メッセージが表示されます。これは、新しいスレッドに呼び出すメソッドに、システム サウンド ID (ファイル名と拡張子) を作成するために使用される 2 つの @"Strings" があるためです。自動解放プールを使用できない方法はありますか?これは、使用しようとする唯一の 2 つのものであるためです。ありがとう。
または、別のスレッドの代わりに 2 つの NSTimer を使用する必要がありますか?
Ben Gottlieb の答えは正しかったのですが、代わりに別の NSTimer を使用することにしました。これは、コードの実際の実行としてスレッドをスリープ状態にすると、少し時間がかかる前に実際に同期されていないことを忘れていたためです。そして、それは物事を対称的にします;)。
iphone - NSAutoreleasePoolの問題
私はiphone2.0でこのコード行を使用していますが、正常に機能します
このコード行をiphone3.0で実行すると、ログ画面にリークメッセージが表示されます。そのメッセージは
誰かが私を助けることができますか?
前もって感謝します....
cocoa - NSAutorelease メモリ リーク
コンソールに次のエラー メッセージが表示されます。
エラーが何であるかわかりませんか?
ありがとう。
iphone - XML の解析時に iPhone アプリがフリーズする
XML フィードを解析するたびに、アプリがフリーズします。
代わりにこれを呼び出してみました:
これは次を呼び出します:
しかし、その結果、私のアプリは非常に不安定になりました... iPhone シミュレーターは、エラー警告なしでクラッシュしました。
cocoa-touch - initWithObjectsを使用してNSArrayに画像をロードするとクラッシュしますが、NSMutableArrayではクラッシュしませんか?
アプリが読み込まれたときに、画像を配列に遅延読み込みしています。NSMutableArrayとNSArrayを使用してみました(作成後に配列を変更する必要はありません)が、後者がクラッシュします。
vs
NSZombieEnabled = YESは、後者のコードスニペットを使用したときに、[UIImageretain]が割り当て解除されたインスタンスに送信されたことを示します。両方の配列は、私のhファイルに(非アトミック、保持)プロパティを持っています。NSArrayによって画像が保持されないのはなぜですか?
objective-c - 別の AutoReleasePool に割り当てられたオブジェクトを解放するにはどうすればよいですか?
Objective-C のメモリ管理に問題があります。オブジェクトを割り当て、このオブジェクトへの参照をクラスのメンバーとして格納するメソッドがあるとします。同じ関数を 2 回実行する場合は、新しいオブジェクトを作成して置き換える前に、この最初のオブジェクトを解放する必要があります。関数の最初の行が次のようになっているとします。
これは、別の自動解放プールが配置されることを意味します。オブジェクトを割り当てるコードは次のとおりです。
問題は、メソッドの最後の行を実行するとプログラムがクラッシュすることです。
私は何を間違っていますか?どうすればこれを修正できますか?
よろしく
アラン
c++ - Objective-CなしでApple自動リリースプールを使用する
Linux、Windows、Mac OS Xで動作する必要のあるアプリケーションを開発しています。そのために、QtでC++を使用しています。
CFBundleCopyBundleURL
多くの理由で、Mac OS Xでは、でリリースする必要のあるコアオブジェクトを作成するCoreFoundation関数(など)を使用する必要がありCFRelease
ます。しかし、そうすることで、これらの警告がたくさん生成されます。
これらの自動解放プールに関して私が見たすべてのコードは、Objective-Cで書かれています。CまたはC++で自動解放プールを作成/使用する方法を知っている人はいますか?