为持有循环引用的对象获取[NSObject description]

时间:2010-08-03 23:23:18

标签: iphone objective-c circular-reference

我有一个NSDictionary。它包含几个对象,包括一个子NSDictionaries数组,每个对象都有一个键入@"Parent"的对象,指向父NSDictionary。

此循环引用打破了使用经典调用检查对象的能力,如:

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

有人会非常友好地推荐一种检查对象的解决方法吗?

1 个答案:

答案 0 :(得分:2)

您可以在NSDictionary的类别中创建自己的描述方法,并手动打印内容而不是依赖字典的描述方法吗?

这里可能存在更大的问题,因为字典保留了它们的内容。如果要将一个对象添加到字典中,它将被保留,然后如果您将包含的字典添加到“子”字典中,它将保留其父级。这可能会导致保留周期,并可能阻止任何对象被解除分配。

来自Aaron Hillegass的“Cocoa Programming for Mac OS X”:

  

如果对象X保留对象Y,并且Y保留X,则永远不会释放对象。这种情况称为保留周期。保留周期可以允许大型垃圾岛在应用程序的内存空间中累积。