码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C(13)代码块---block

时间:2016-02-28 17:05:45      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:objective-c   ios   xcode   对象      面向对象   

  • block类型

block是一种数据类型,在iOS开发中广泛使用且被苹果公司极力推荐使用,其功能很像C语言中的函数指针。

     ^ 是block的特有标志。

     block的实现代码包含在{ }中。

     大多数情况下,以内联的形式被定义及使用。


void (^demoBlock)() = ^ {
    NSLog(@"demo Block");
}
int (^sumBlock)(int, int) = ^(int x, int y) {
    return x + y;
}

 

block的使用和函数指针的使用类似

int (^sumblock)(int, int) = ^(int a, int b) {
    return a>b?a:b;
}
int c = sumblock(10, 20);
NSLog(@"c=%d", c);


block内部可以访问外部的变量

     外部的局部变量,block内部不能修改,全局变量可以。

     如果局部变量使用__block声明,则可以在内部修改。

int a = 10;
__block int b = 20;
void (^myblock)();
myblock = ^ {
    NSLog(@"a=%d", a);
    b = 20;
}
myblock();

     

实际上,定义block时会对局部变量进行拷贝(副本)


block的重要意义:在处理异步任务时非常方便,这也是block应用的难点



本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1745694

Objective-C(13)代码块---block

标签:objective-c   ios   xcode   对象      面向对象   

原文地址:http://annmeng.blog.51cto.com/3321237/1745694

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!