2

私が覚えている限りではperformSelectorOnMainThread:、Apple のドキュメントで、メソッドの実行が終了するまでオブジェクトを保持するようなもの (およびバリアント) がありました。したがって、ios6 でそのような動作に依存できますか? NSObject Class Referenceに情報がないためですGCD を使用したい場合の同じ質問dispatch_async/ sync- バックスレッドで作成されたオブジェクトがある場合 -dispatch_sync(dispatch_get_main_queue)セレクターが実行されるまでオブジェクトが解放されないようにする必要があります。

4

2 に答える 2

0

GCDディスパッチがコンテキストをキャプチャするブロック:この場合、これは、実行されるまで参照するすべてのものを保持することを意味します:)

于 2012-12-03T22:35:35.060 に答える
0

Cocoa メモリ管理システムの特徴は、これを気にする必要がないことです。メモリ管理は完全にローカルです。他の関数が何をするかは気にしません。基本的なルールは次のとおりです。呼び出し元は、関数が呼び出されたときにオブジェクト引数が有効であることを保証し、それ以外は保証しません

関数が後で使用するために何らかの方法でオブジェクトを保存する場合、オブジェクトがそれ以上有効であるとは想定しないため、何らかの方法でそれを保持する必要があります (演繹により)。逆に、関数の呼び出し元として、関数が何をするか、関数が非同期的に何かを行うかどうかについて考える必要はありません。関数が呼び出された後の任意の時点で引数が生きていることを関数に保証していないからです。

于 2012-12-03T22:20:38.823 に答える