【问题标题】:Getting [NSObject description]s for objects holding circular references为持有循环引用的对象获取 [NSObject 描述]
【发布时间】:2010-08-03 23:23:17
【问题描述】:

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

这种循环引用破坏了使用经典调用检查对象的能力,例如:

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

有人能推荐一个检查对象的解决方法吗?

【问题讨论】:

    标签: iphone objective-c circular-reference


    【解决方案1】:

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

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

    来自 Aaron Hillegass 的“Mac OS X 的 Cocoa 编程”:

    如果对象 X 保留对象 Y,而 Y 保留 X,则永远不会释放对象。这种情况称为保留周期。保留周期可能会在应用程序的内存空间中堆积大量垃圾。

    【讨论】:

    • 感谢您提供有关保留周期的说明。我以前没有被提醒过这个问题。你让我开始疯狂阅读以了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多