myArray
能否在 block 之前安全释放?
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"a"];
[myArray addObject:@"b"];
// releasing here causes an invalid object to be used inside the block?
[myArray release];
CCCallBlock *block = [CCCallBlock actionWithBlock:^{
// print myArray contents to console
}];
[myNode runAction:block];
最佳答案
不,您不能在 block 之前释放数组,因为在调用释放之后,在您的 block 有机会保留它之前,数组中的对象和数组本身将无法使用。
您可以使您的数组自动释放,在这种情况下释放将在函数退出后发生。
NSMutableArray *myArray = [NSMutableArray array];
[myArray addObject:@"a"];
[myArray addObject:@"b"];
CCCallBlock *block = [CCCallBlock actionWithBlock:^{
// print myArray contents to console
}];
[myNode runAction:block];
关于objective-c - 我可以释放在 block 运行之前使用它的 block 外部创建的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903577/