Block變數的宣告、賦值與呼叫

1.Block變數的宣告

//Block變數的宣告格式為: 返回值型別(^Block名字)(引數列表);

// 宣告一個無返回值,引數為兩個字串物件,叫做aBlock的Block
void(^aBlock)(NSString *x, NSString *y);

// 形參變數名稱可以省略,只留有變數型別即可
void(^aBlock)(NSString *, NSString *);

//注: ^被稱作"脫字元"

2.Block變數的賦值

//Block變數的賦值格式為: Block變數 = ^(引數列表){函式體};

aBlock = ^(NSString *x, NSString *y){
    NSLog(@"%@ love %@", x, y);
};


//注: Block變數的賦值格式可以是: Block變數 = ^返回值型別(引數列表){函式體};,不過通常情況下都將返回值型別省略,因為編譯器可以從儲存程式碼塊的變數中確定返回值的型別

3.匿名block

// 1.定義一個形參為Block的OC函式
- (void)useBlockForOC:(int(^)(int, int))aBlock
{
    NSLog(@"result = %d", aBlock(300,200));
}

4.常規定義和使用


/**
 *  定義一個block
 *
 *  @param flag
 */
typedef void (^myBlock)(BOOL flag);

@interface Person : NSObject

//宣告一個block變數
@property (nonatomic, copy) void(^myBlock)(BOOL);

@end