Blocks 是一個指令集合, 雖然它是個物件, 但是卻是以函數的方式執行.

在其他的語言中, 也有類似的功能, 例如C#中的匿名函數(Anonymous Functions)

 一個指向 block 的變數 (block variable)

void (^foo) (void);

更多變數

int (^foo1) (void);
NSString* (^foo2) (void);
void (^foo3) (CGRect);
void (^foo4) (UIImage*);

block 定義 (block literal)

^void(void) {
    NSLog(@"Block: foo");
};

更多 block 定義

^void(void) {
    NSLog(@"Block: foo");
};
^CGRect(int width, int height) { return CGRectMake(0, 0, width, height); }
^void(NSString* strMessage) {
    NSLog(@"Message: %@", strMessage);
}

一個變數指向一個 block 定義

UIImage* (^foo5) (void) = ^{
    return [UIImage imageNamed:@"foo.png"];
}

如上例, 若 block 沒有參數, 則可以省略; 傳回值也可以靠 return 判斷, 因此也可以省略

執行 block

UIImage* image = foo5();
文章標籤
全站熱搜
創作者介紹
創作者 娜因貓 的頭像
娜因貓

貓的手作用品

娜因貓 發表在 痞客邦 留言(0) 人氣(48)