How Retain cycles occurs in Memory Management?

前端 未结 2 1443
栀梦
栀梦 2021-01-29 00:37

Can some explain the retain cycles problem with a sample program?

相关标签:
2条回答
  • 2021-01-29 01:28

    I've got just the right article(s) for you:

    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/

    0 讨论(0)
  • 2021-01-29 01:30

    Consider the following:

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

    When b is inserted into a, b is retained, likewise a when its inserted into b. As both now have a strong reference to each other, neither will get deallocated unless you manually break the cycle by e.g. removing one from the other.

    Note that the Cocoa Memory Management guide also contains a section on retain cycles and includes an explanation of weak references, which help with these problems.

    0 讨论(0)
提交回复
热议问题