5

Obj-Cブロックは、私が最近初めて使用したものです。次のブロック構文を理解しようとしています。

ヘッダーファイル:

@property (nonatomic, copy) void (^completionBlock)(id obj, NSError *err);

メインファイル:

-(void)something{

id rootObject = nil;

// do something so rootObject is hopefully not nil

    if([self completionBlock])
        [self completionBlock](rootObject, nil); // What is this syntax referred to as?
}

助けてくれてありがとう!

4

2 に答える 2

5

ブロックはオブジェクトです。

メソッド内のケースでは、ブロックがnilでないかどうかをチェックしてから、2つの必要な引数を渡してブロックを呼び出しています...

ブロックはac関数と同じ方法で呼び出されることに注意してください...

以下では、理解を深めるためにステートメントを2つに分割しました。

[self completionBlock]  //The property getter is called to retrieve the block object
   (rootObject, nil);   //The two required arguments are passed to the block object calling it
于 2012-09-21T07:17:59.690 に答える
2

そのブロックプロパティで、実行時にブロックを設定できます。

設定する構文は次のとおりです

void型なので、クラス内で次のコードでメソッドを設定できます

self.completionBlock = ^(id aID, NSError *err){
    //do something here using id aID and NSError err
};

次のコードを使用すると、以前に設定されたメソッド/ブロックを呼び出すことができます。

if([self completionBlock])//only a check to see if you have set it or not
{
        [self completionBlock](aID, nil);//calling
}
于 2012-09-21T07:33:35.990 に答える