[解決済み] iOS5におけるstrong storageとweak storageの説明
質問
iOS5の開発で、objective-cを使うのは初めてです。の違いを理解するのに苦労しています。 strong と 弱い を保存しています。 ドキュメントや他のSOの質問も読みましたが、どれも同じように聞こえてしまい、それ以上の洞察はありません。
私が読んだのは のドキュメントを読みました。ARC への移行 - を読むと、iOS4 の用語である retain、assign、release に言及していて、混乱しました。それから、Open U CS193p を調べると、strong と weak を区別しています。
強い : "私がもうそれを指さないまで、これをヒープに保管してください"。
弱い : "誰かがそれを強く指摘する限り、これを維持する"。
ポインタがオブジェクトを指していない場合、そのオブジェクトを保持しているメモリを解放する、という2つの定義は同じではないですか?ポインター、ヒープ、メモリの割り当てまたは解放の概念は理解できますが、強いと弱いの違いは何でしょうか?
どのように解決するのですか?
がなくなると同時にオブジェクトが解放される点が異なります。 強い のポインタが無くなるとすぐに割り当て解除されることです。たとえ弱いポインタがそれを指していたとしても、最後の強いポインタがなくなれば、オブジェクトは解放され、残りの弱いポインタはすべてゼロになります。
おそらく例があるはずです。
私たちのオブジェクトが犬で、その犬が逃げ出したい(割り当て解除されたい)と思っているとします。
強力なポインタは、犬につけられた鎖のようなものです。犬にリードを付けている限り、犬は逃げません。もし、1匹の犬に5人がリードを付けたら(1つの物体に5つのストロングポインターを付けたら)、5つのリードがすべて切り離されるまで、犬は逃げません。
一方、弱いポインターは、小さな子供が犬を指差して「見て!犬だよ!」と言うようなものです。犬がまだ鎖につながれている限り、小さな子供たちはまだ犬を見ることができ、それを指さします。しかし、すべてのリードが外れた途端、いくら小さな子供たちが指をさしても、犬は逃げてしまうのです。
最後の強いポインタ(リーシュ)がオブジェクトを指さなくなるとすぐに、そのオブジェクトは解放され、すべての弱いポインタがゼロになります。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン