Object-c中block需要注意的几点问题
1. Block定义
1) 说明:
int i = 10;
void(^myBlock)() = ^{
NSLog(@"%d", i);
};
i = 100;
myBlock();
BOOL flag = NO;
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([@"王五" isEqualToString:obj] || idx == stopIndex) {
*stop = YES;
flag = YES; // 编译错误!!!
}
}];
NSString *stopName = @"王五";
NSArray *array = @[@"张三", @"李四", @"王五", @"赵六"];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"第 %d 项内容是 %@", (int)idx, obj);
if ([stopName isEqualToString:obj] || idx == stopIndex) {
*stop = YES;
}
}];
注意:
@property (nonatomic, strong) NSMutableArray *myBlocks;
#pragma mark 将代码改为调用self的方法
int(^sum)(int, int) = ^(int x, int y) {
return [self sum:x y:y];
};
[self.myBlocks addObject:sum];
#pragma mark 对象被释放时自动调用
- (void)dealloc
{
NSLog(@"DemoObj被释放");
}
__weak DemoObj *weakSelf = self;
int(^sum)(int, int) = ^(int x, int y) {
return [weakSelf sum:x y:y];
};
最新文章
- fool
- iOS-多线程--介绍NSOperration
- Linux 下 Oracle 内核参数优化
- Linux之编译需要的文件变化时刻
- django LDAP
- Python运行Google App Engineer时出现的UnicodeDecodeError错误解决方案
- 关于InputStream 和String对象之间的相互转换
- Cstring 的用法
- Openlays 3 绘制基本图形
- java关于字符串的一些实用操作工具类方法
- php的opcache缓存扩展
- cocos2dx 3.x(绘制线条)
- Iframe跨域JavaScript自动适应高度
- moodle安装体验
- iOS开发如何在一个透明视图上添加不透明的子控件
- hdu4719 Oh My Holy FFF 线段树优化dp
- python之socket编写
- JMS消息服务模型
- Sqlserver 密码过期时间查询
- 如何在 Azure 中创建 ASP.NET Web 应用