如何在内存管理中发生保留周期?

时间:2010-07-10 15:04:24

标签: iphone memory-management

有人可以用示例程序解释保留周期问题吗?

2 个答案:

答案 0 :(得分:3)

请考虑以下事项:

NSMutableArray *a = [NSMutableArray array];
NSMutableArray *b = [NSMutableArray array];
[a addObject:b];
[b addObject:a];

b插入a后,b会被a保留,同样会b插入{{1}}。由于两者现在彼此之间都有一个强引用,因此除非你手动打破周期,否则它们都不会被释放。从另一个中移除一个。

请注意,“可可内存管理”指南还包含a section on retain cycles,并包含对弱引用的说明,这有助于解决这些问题。

答案 1 :(得分:1)