1

ブロックで変数を変更できるようにする場合は、事前に__blockを使用して変数を宣言する必要があることがわかっています。しかし、ブロックを次のように呼び出すとどうなりますか

dispatch_async(myQueue(), ^{
    [self doStuff];
});

doStuff内のコードはこのルールの対象ですか?doStuffが.hで宣言された変数またはプロパティを使用していると想像してください。これらの変数/プロパティは、__ blockプレフィックスを使用して宣言する必要がありますか?

4

2 に答える 2

3

それが大きな違いを生むとは思いません。通常の関数で使用するように、インスタンス メソッドとグローバル変数を使用できると思います。

例:

 dispatch_async(dispatch_get_main_queue(), ^{
        liveImageView.image = image;
    if (image) {
        [self analyzeImage:image];
        currentImage = image; //here currentImage is a global variable, declared in .h
    }
    mod++;
    [image release];
});
于 2011-02-20T18:05:46.027 に答える
2

メソッドで使用される変数はブロックとは関係がないため、そのメソッドを呼び出すためにインスタンス変数で __block プレフィックスを使用する必要はありません。ただのメソッド呼び出しです。

ただし、ブロックが保持されることに注意してselfください。

于 2011-02-20T18:08:11.247 に答える