有人可以用示例程序解释保留周期问题吗?
答案 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)
我为你准备了合适的文章:
http://cocoawithlove.com/2010/06/assign-retain-copy-pitfalls-in-obj-c.html
http://cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
http://www.markj.net/iphone-memory-management-tutorial-video/