iOSアプリ開発のメモ置き場

ささたつがiOSアプリ開発で知ったObjective-Cのtipsなどを書いていく所存

Block構文を使ったサンプルコード

ややこしいなー

// (戻り値の型 (^)(引数))メソッド名
- (NSArray *)filter:(NSArray *)array block:(BOOL (^)(int))block
{
    NSMutableArray *result = [NSMutableArray array];
    for (NSNumber *num in array) {
        if (block(num.intValue)) {
            [result addObject:num];
        }
    }
    return result;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSMutableArray *numbers = [NSMutableArray array];
    for (int i = 0; i < 10; i++) {
        [numbers addObject:[NSNumber numberWithInt:i]];
    }
    
    // ^(引数) {処理}
    NSArray *result = [self filter:numbers block:^(int n) {
        if (n % 2 == 0) {
            return YES;
        } else {
            return NO;
        }
    }];
    
    for (NSNumber *num in result) {
        NSLog(@"%d", num.intValue);
    }
}


参考URL: http://cocoadays.blogspot.jp/2013/07/10blocks.html