问题描述
|
我如何说闭包将保留哪种类型的对象?是否有/将不会保留任何特定的规则或类型列表?
解决方法
保留所有Objective-C对象。其他所有内容都将被简单复制。例如,这是三个变量:
NSArray* array = [NSArray array];
int i = 0;
int* ptr = malloc(sizeof(int));
可以从一个块内部读取所有三个变量。但是,将仅保留array
,因为它是可以调用retain
方法的唯一变量。
由于块是无法保留的指针,因此应格外小心,以确保执行块时ptr
指向的位置仍然存在。