IOS Block 基础用例

Block这渣渣,对于刚写IOS的人,肯定都是有很多疑惑的,我们先来说明Block的语法及用例。

block声明定义.jpeg

1.定义一个Block

int num1 = 2;

定义一个名为myBlock,返回值为int参数为空的 block    
int (^myBlock)(void) = ^(void) {
return 10;
};
myBlock();
        
int (^myBlock1)(int) = ^(int num){
return num * 10;
};
myBlock1(num1);
    
void (^myBlock2)(int,int) = ^(int num1,int num2){
NSLog(@"num1 is : %d  num2 is : %d ",num1,num2);
};
myBlock2(num1,100);

2.把block当做参数


blockMethod.png
blockMethod-1.png
-(void) addPullToRefreshBlock:(void(^)(void))block {
    _cardTableView.mj_header = [MyMJHeader headerWithRefreshingBlock:^{
        block();
    }];
}

3.把block当做返回值

- (void (^)(void)) method;

4.typedef block

typedef void (^BoolBlock)(BOOL);//一个只接受一个BOOL参数,没有返回值的block

typedef int (^IntBlock)(void);//一个没有参数,返回int的block
typedef BoolBlock (^HugeBlock)(IntBlock);//看看,这个HugeBlock的参数和返回值都是block

同样,利用typedef后的 block 类型,就可以简化上面各种写法
例如:
block参数
-(void) addPullToRefreshBlock:RefreshBlock block{
  //code
}
返回block
-(BoolBlock) method;

5.类的成员变量

利用上面的 typedef后的类型
@property (copy,nonatomic) BoolBlock myBlock;

6.全局block

static int(^maxIntBlock)(int, int) = ^(int a, int b){return a>b?a:b;};
int main()
{
    printf("%d\n", maxIntBlock(2,10));  
    return 0;
}

7.__block

如果要在block内修改block外声明的栈变量,那么一定要对该变量加__block标记
int main()
{
    __block int i = 1024;
    BoolBlock bBlock = ^(BOOL bV) {
        if (bV) {
            i++;//如果没有__block标记,是无法通过编译的。
        }
    };
}

参考资料:http://www.dreamingwish.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 13,340评论 10 69
  • Block基础回顾 1.什么是Block? 带有局部变量的匿名函数(名字不重要,知道怎么用就行),差不多就与C语言...
    Bugfix阅读 11,732评论 5 61
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 9,164评论 0 23
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,404评论 30 472
  • 2.1 Blcoks概要 2.1.1 什么是Blocks Blocks是C语言的扩充功能——“带有自动变量(即局部...
    SkyMing一C阅读 6,984评论 6 18

友情链接更多精彩内容