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();
文章標籤
全站熱搜
