このようなブロックを宣言し^{ DoSomething; }
てインスタンス変数に入れる場合、Block_copy()
それを維持するのであれば、そうする必要がありますか?
3922 次
1 に答える
11
はい、コピーする必要があります。自動リリースされるためではなく、スタックから開始されるためです。ブロックも通常のObjective-Cオブジェクトのように動作するため、通常のcopy
メッセージを使用してブロックをコピーできることに注意してください。
void storeBlockForLater: (dispatch_block_t) block
{
[someArray addObject:[[block copy] autorelease]];
}
または、ブロックプロパティがある場合:
@property(copy) dispatch_block_t block;
ここでは保持は役に立ちません。
于 2011-01-12T10:01:01.623 に答える