开发者

Getting [NSObject description]s for objects holding circular references

I have an NSD开发者_StackOverflowictionary. It holds several objects, including an array of child NSDictionaries, each of which have an object keyed as @"Parent" that point back to the parent NSDictionary.

This circular reference breaks the ability to inspect the object with a classic call like:

NSLog(@"%@", [myDictionary description]);

Would anyone be so kind as to recommend a workaround for inspecting the object?


Could you create your own description method in a category on NSDictionary and print out the contents manually rather than relying on the dictionary's description method?

There could be a bigger problem at hand here, in that dictionaries retain their contents. If you're adding an object to a dictionary, it gets retained, and then if you're adding the containing dictionary to the "sub" dictionary, it retains its parent. This will probably result in a retain cycle and probably prevent any of the objects getting deallocated.

From "Cocoa Programming for Mac OS X" by Aaron Hillegass:

If object X retains object Y, and Y retains X, the objects will never be deallocated. This situation is known as a retain cycle. A retain cycle can allow large islands of garbage to accumulate in your application's memory space.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜