XCode "區塊運算"分享
Reference from: Blocks Programming Topics在XCode的開發中,會看到 ^符號,它除了可以作為XOR運算外,在XCode還有一個很常用的操作,
^
可作為區塊運算的識別字。有關XCode 的區塊運算是一個非常方便的工具,它可以當作 callback function,也可以將一組function直接嵌入你要呼叫的function裡,例如://在沒有ARC下,可在ViewController 移除後,將自已給釋放
[myViewController dismissViewControllerAnimated:YES
completion:^() {
[myViewController release];
myViewController = nil;
}
];
在官網文件中,開宗明義指出You use the ^ operator to declare a block variable and to indicate the beginning of a block literal. The body of the block itself is contained within {}。
'^'符號作為區塊(Block)的開頭文字,在使用方法上,請見下圖不解釋了。除了官網文件中所提到的範例,另外我也列出一些我在使用上所使用例子:
- 當 callback function 使用
//MyViewController.h
typedef void (^TouchedInside)();
@interface MyViewController : UIView
{
__strong TouchedInside _insideBlock;
}
-(void)setTouchedInsideBlock:(TouchedInside)insideBlock;
@end
//MyViewController.m
@implementation FPTouchView
-(void)setTouchedInsideBlock:(TouchedInside)insideBlock
{
_insideBlock = [insideBlock copy];
}
@end
- 把區塊(block)直接嵌入要呼叫函數裡
//Declare in UIViewController.h
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
//sample
[myViewController dismissViewControllerAnimated:YES
completion:^() {
[myViewController release];
myViewController = nil;
}
];