問題タブ [autorelease]

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 に答える
813 参照

iphone - copyWithZoneの戻り値の所有権と保持カウント

copyWithZoneに関するアップルのドキュメントを読みました:

「返されたオブジェクトは、それを解放する責任がある送信者によって暗黙的に保持されます」。

だから私がこれを書くと:

そして私は電話します:

obj保持されますか?自動リリースを設定しない場合、保持カウントはどうなりますか?

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

iphone - iPhone - 自動解放後に保持するとどうなりますか?

自動解放されたオブジェクトを保持するとどうなるか知っていますか? それはリリースされますか、それとも保持が勝ちますか?

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

objective-c - iOS / ManagedObjectContext でのメモリ管理

Objective C のメモリ管理を理解していなかったようです... ため息。

私は次のコードを持っています(私の場合、両方とも有効なデータで満たされていることに注意してくださいplacemark.thoroughfareplacemark.subThoroughfareしたがって、両方のif条件はTRUE

itemに結び付けられていManagedObjectContextます。itemなどの管理変数には、 でplace作成されたセッター/ゲッターがあり@dynamicます。したがって、宣言は

コードの後半、ReverseGeocoderDelegate でアクセスします。

コード内のマークされた場所で解放しないとitem.place、Instruments はそこでメモリ リークを検出します。item.placeその場合、問題のあるメソッドの外部にアクセスしようとするとすぐにプログラムがクラッシュします。

何か案は?

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

iphone - 自動解放プールクラッシュアプ​​リ

自動リリースプールがアプリをランダムにクラッシュさせていますが、この問題の一般的な原因は何ですか?

これは、オブジェクトが過剰に解放されているためです。自動解放プールがオブジェクトを解放しようとする前に、オブジェクトが解放されていると考えるのは正しいですか。したがって、自動解放プールはオブジェクトを過剰解放しようとしますか?

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

cocoa - NSOperation 内でオブジェクトを自動解放しても安全ですか?

NSOperationQueue で NSInvocationOperation タイプの操作を実行していますが、オブジェクトを自動解放しても安全かどうか疑問に思っていました。つまり、操作ごとに開始されたスレッドに独自の自動解放プールがあることが保証されている場合です。

操作用の自動解放プールに関するドキュメントは見つかりませんでした。実際、Apple のドキュメントを読むと、独自の自動解放プールを定義する必要があることがわかります。

ただし、1) インストルメントにリークは見られません。少なくとも、操作で独自の自動解放プールを割り当てた場合よりも多くはありません。

2) デバッガーを見ると、次のスタック トレースが表示されます。

つまり、CFAutoreleasePool があるように見えます。このオブジェクトは、操作が完了したときに、自動解放されたすべてのオブジェクトに対して release を呼び出すと想定しても安全ですか?

0 投票する
0 に答える
383 参照

iphone - プールが配置されていない状態で NSFetchRequest が自動解放されました - リークしているだけです

まず、このウェブサイトとそのメンバーの反応は素晴らしいと言わざるを得ません。最も役に立ちます。ありがとうございました。

次に、作業中の iPhone/iPad アプリのトラブルシューティング中に、次のエラーをトラブルシューティングしています。

NSFetchRequest は、プールが配置されていない状態で自動解放されました - リークしているだけです。

犯人コードは

この方法で見つけた

リリースステートメントが適切に設定されているかどうかはわかりませんが、そもそもエラーが表示されるまではわかりません. 私は目的の c に少し慣れていませんが、コンパイル時にアプリケーションはエラーを示しませんでした (実行時にメッセージが表示されます)。

誰かがこれで私を助けることができれば、それは大歓迎です。

ありがとう

エドワード

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

objective-c - なぜこれがクラッシュしないのですか?

バグを最小限の再現可能なケースに絞り込もうとしているところ、奇妙なことがわかりました。

次のコードを検討してください。

このコードがクラッシュすることを期待しています。代わりに、以下をログに記録します。

ただし、次のように変更するNSLog()と:

その後、クラッシュします。

もう少し情報を編集します:

プールを排水した後:

したがって、明らかに文字列に対してメソッドを呼び出すだけで、クラッシュするのに十分です。その場合、文字列を直接ログに記録してもクラッシュしないのはなぜですか? NSLog()メソッドを呼び出すべきではありません-descriptionか?

2 番目の「 static: 」はどこから来ているのですか? なぜこれがクラッシュしないのですか?


結果:

ケビン・バラードとグラハム・リーの両方が正しい. (私が誤って想定していたように) それが呼び出されてNSLog()ないことを認識した Graham の意見は正しかったし、Kevin は、これがフォーマット文字列のコピーと周り-descriptionの奇妙なスタック関連の問題であることはほぼ間違いなく正しい。va_list

  1. NSLoggingNSString呼び出しません-description。Graham はこれをエレガントに示しました。ロギングを行う Core Foundation のソースをたどると、これが事実であることがわかります。内部で発生したバックトレースは、 => => =>NSLogを呼び出していることを示しています。 (5365 行目) ですべての魔法が実行されます。すべての置換を手動で検索していることがわかります。置換の型が aであり、記述関数が非 nil であり、置換が別の型によってまだ処理されていない場合にのみ、記述コピー関数を呼び出すことになります。説明がコピーされていないことを示したので、NSLogv_CFLogvEx_CFStringCreateWithFormatAndArgumentsAux_CFStringAppendFormatAndArgumentsAux_CFStringAppendFormatAndArgumentsAux()%CFFormatObjectTypeNSStringより早く処理されます (その場合、おそらく未加工のバイト コピーを実行することになるでしょう)。
  2. Kevin が推測しているように、ここでスタック エラーが発生しています。どういうわけか、自動解放された文字列を指していたポインターがのオブジェクトに置き換えられていますNSString。だから、それはクラッシュしません。変。ただし、静的変数の型を などの別のものに変更するとNSArray-descriptionメソッドが呼び出され、プログラムは予想どおりにクラッシュします。

本当にまったく奇妙です。ポイントは、行動の根本原因について最も正確であるケビンに与えられ、グラハムに私の誤った考えを正したことを称賛します. 2つの答えを受け入れることができればいいのに...

0 投票する
0 に答える
266 参照

iphone - autorelease オブジェクトが NSMutableArray に追加されていても割り当てが解除される

以下を使用してオブジェクトを作成します。

次に、それを NSMutableArray に追加します。

私が初期化した場所:

しばらくすると、このオブジェクトは自動解放されます - 私の NSMutableArray に追加されたにもかかわらず、それは間違いなく解放されていません。

この動作がわかりません。NSMutableArray のメンバーである限り、NSMutableArray によって所有されるべきではありませんか?

ps。実際、これが単純な配列の代わりに NSMutableArray を使用する主な理由の 1 つです。NSMutableArray は autorelease オブジェクトで所有権を処理します。

ここでどこが間違っていますか???? どうもありがとう!

0 投票する
4 に答える
837 参照

iphone - 基本的な保持、自動解放に関する質問

質問を保持して自動リリースします。

2 つのコードに違いはありませんか?

で、この二人?保持数についてはまだわかりません。ありがとうございました。

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

objective-c - 自動解放後、セッターのために保持

Google Objective-C Style Guideによると、自動解放してから次のように保持する必要があります。

この場合、foo_ は同じインスタンスに設定されていても解放されず、より防御的なセッターになります。

私の質問は、これが @property と @synthesize の仕組みですか?