- (NSString*) generate:(NSArray*)data withBlock:(BOOL (^)(NSString*))aBlock;{
NSMutableString* str= [NSMutableString string];
for(NSString *v in data){
if(aBlock(v)){
     [str appendString:v];
}
}
}
麻烦请教哈,这段代码是什么意思?
blockbject-c

解决方案 »

  1.   

    ^是block块,这个函数是让你传入块的行为规则进去如: NSArray *arry=[[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil];
        [self generate:arry withBlock:^BOOL(NSString *a) { return [a isEqualToString:@"a"];//此处行为规则你可以动态传进去
            
        }];
    这样只有“a"会加到 str里
      

  2.   

    麻烦追问一下,一个带方法的块,写法必须是:
    withBlock:(BOOL (^)(NSString*))aBlock;分号后面再跟块的结构?{
    NSMutableString* str= [NSMutableString string];
    for(NSString *v in data){
    if(aBlock(v)){
         [str appendString:v];
    }
    }
      

  3.   

    定义的那个分号无意义,可以去掉
    好比代码中最后一个分号和两个分号意义,只是多了一句无意义的代码
    int i=0;; //最后一个分号无意义