Lambda格式:
[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}
第一个坑:
这里的函数对象参数如果是OC对象的话要注意保证这个OC对象不要被释放, 如果Lambda里面使用了的释放的OC对象, 那么很有可能会crash.
一个简单的代码:
- (void) testLambda {
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1", @"2", nil];
auto func = [arr] ()
{
NSLog(@"11111 %@", [arr objectAtIndex:1]);
};
[arr release];
func();
}
在NSLog那行会crash.