如何判断闭包将保留哪种类型的对象?闭包将会/不会保留任何特定的规则或类型列表吗?
答案 0 :(得分:1)
保留所有Objective-C对象。其他一切都只是被复制了。例如,这里有三个变量:
NSArray* array = [NSArray array];
int i = 0;
int* ptr = malloc(sizeof(int));
所有三个变量都可以从块内部读取。但是,只保留array
,因为它是唯一可以调用retain
方法的变量。
在执行块时,应特别注意确保位置ptr
仍然存在,因为它是一个无法保留的指针。