0

我有一个单例对象,它是我的应用程序的一个模块,并且在此模块中创建的所有对象与任何其他模块都没有关系。我的应用程序创建了这个单例对象,并且这个对象进一步创建了它的子对象,它们没有任何关系我的应用程序中除此模块之外的其他对象。因此,在此模块任务结束后,我将此模块对象设置为nil。但是两个对象没有释放并显示在 xcode 的工具中。singelton 对象正在正确释放,但它的两个子对象仍然存在在记忆中。

我的项目完全是 ARC。那么编译器在其父(单例对象)设置为nil.

提前致谢

4

2 回答 2

1

但是两个对象没有在 xcode 的工具中释放和显示。singelton 对象正在正确释放,但它的两个子对象保留在内存中。

我担心有一个保留周期。
因此,例如 child1 指向 child2,反之亦然。要打破这个循环,您应该使用弱引用。
我看不到代码,所以这只是一个想法。

于 2012-12-22T21:01:56.923 回答
-1

如果您在其中初始化更多对象,然后再次调用超级对象,则单例通常是一个问题。因为单例静态变量还没有赋值。

您可以通过执行以下操作来防止这种情况:


单例文件

+ (SomeClass *)sharedInstance {
    if (!_someStaticInstance) {
        _someStaticInstance = [[SomeClass alloc]init];
    }

    return _someStaticInstance;
}

- (void)initialise {
    // do the real initialising here
}

创建它的文件

[[SomeClass sharedInstance] initialise];
于 2012-12-22T20:27:24.187 回答