-1
-(void) vPerformBlockOnAllAutoCompleteHandler:((^)(BGMotherofAutoCompleteHandler * acHandler))block
{
    for (BGMotherofAutoCompleteHandler * acHandler in [self arBGKeywordAutoCompleteHandlers]) {
        block(acHandler);
    }
}

よし、block は BGMotherofAutoCompleteHandler を引数にとるブロックだ。ループを通過して、block(acHandler) を呼び出します。

どうしたの?

エラー: /business/Dropbox/badgers/BadgerNew/BGSearchController3.m:218:49: タイプが必要です。ブロックの前に void を追加する必要があるようです。

だからこれはうまくいく

-(void) vPerformBlockOnAllAutoCompleteHandler1:(void (^)(BGMotherofAutoCompleteHandler * acHandler))block
{
    for (BGMotherofAutoCompleteHandler * acHandler in [self arBGKeywordAutoCompleteHandlers]) {
        block(acHandler);
    }
}

ただし、ブロックがパラメーターを必要としない場合は、そのボイドを追加する必要はありません。これはとても奇妙だと思いました。

4

1 に答える 1

2

構文は次のとおりです。

- (void)vPerformBlockOnAllAutoCompleteHandler:(void(^)(BGMotherofAutoCompleteHandler*))block
{
 for (BGMotherofAutoCompleteHandler * at in [self arBGKeywordAutoCompleteHandlers]) {
  block(at);
 }
}

これがチートシートです。

于 2013-09-30T12:11:13.433 に答える