1

私が読んでいる本でこれに遭遇し、それは私に考えさせました:

「ブロックを割り当てると、スタック上に作成されます。これは、ブロックへの強い参照を保持していたとしても、後で呼び出すとクラッシュすることを意味します。これは、ブロックを離れるとすぐにメモリが破壊されるためです。それが定義された方法。」

何かへの強いポインタがあれば、それは生き続けると思いましたか?これは、スタックに割り当てられたオブジェクトには適用されないということですか?

ブロックを使用せずに例を考えようとしています...(たとえば、ポインターの-おそらくivar-ポインターが生きていても破棄されるスタック割り当てオブジェクトを指す)

4

2 に答える 2

1

ブロックは、オブジェクトのようにメッセージを送信できます。それらをスタックからヒープに移動するには、それらを「コピー」するだけです。

void (^stackBlock)() = [^(){
    NSLog(@"Hello world");
} copy];
于 2013-09-03T08:13:30.650 に答える