首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
iOS中block的使用详解
时间:
2014-12-26 16:48:32
阅读:
198
评论:
0
收藏:
0
[点我收藏+]
标签:
block
第一、block的使用
1、截获自动变量的值
typedef void(^TEST)(void);
int main(int argc, const char * argv[]) {
@autoreleasepool {
TEST test;
NSString *sample=@"hello";
test=^{
NSLog(@"%@",sample);
};
sample=@"name";
NSLog(@"%@",sample);
test();
}
return 0;
}
执行结果:
2014-12-26 11:55:49.172 TEST[1262:303] name
2014-12-26 11:55:49.173 TEST[1262:303] hello
2、__block的使用
typedef void(^TEST)(void);
int main(int argc, const char * argv[]) {
@autoreleasepool {
TEST test;
__block NSString *sample=@"hello";
test=^{
sample=@"what";
NSLog(@"%@",sample);
};
sample=@"name";
NSLog(@"%@",sample);
test();
}
return 0;
}
执行结果:
2014-12-26 11:51:02.532 TEST[1202:303] name
2014-12-26 11:51:02.534 TEST[1202:303] what
注意如果不使用__block关键词,则会编译出错
3、截获的自动变量的地址
typedef void(^TEST)(void);
int main(int argc, const char * argv[]) {
@autoreleasepool {
TEST test;
id array=[NSMutableArray new];
test=^{
NSDictionary *temp=@{@"key":@"value"};
[array addObject:temp];
NSLog(@"%@",array);
};
test();
}
return 0;
}
结果:2014-12-26 11:59:05.941 TEST[1306:303] (
{
key = value;
}
)
说明:array 为NSMutableArray对象地址,在block函数中改地址并没有改变,所以是正确的
如果是如下:
TEST test;
NSMutableArray *arr=[[NSMutableArray alloc] init];
test=^{
arr=[[NSMutableArray alloc] init];
};
test();
arr要改变地址,所以编译错误
如果是如下实例:
NSString *str1=@"strstr";
id array=[NSMutableArray new];
test=^{
str1=@"hello";
};
test();
这是有错的,因为str1在block中地址发生变化了,刚开始指向的是静态变量去@“strstr”,现在指向了@“hello”静态变量区地址
iOS中block的使用详解
标签:
block
原文地址:http://blog.csdn.net/richard_rufeng/article/details/42171685
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!