我有一个单例对象,它是我的应用程序的一个模块,并且在此模块中创建的所有对象与任何其他模块都没有关系。我的应用程序创建了这个单例对象,并且这个对象进一步创建了它的子对象,它们没有任何关系我的应用程序中除此模块之外的其他对象。因此,在此模块任务结束后,我将此模块对象设置为nil
。但是两个对象没有释放并显示在 xcode 的工具中。singelton 对象正在正确释放,但它的两个子对象仍然存在在记忆中。
我的项目完全是 ARC。那么编译器在其父(单例对象)设置为nil
.
提前致谢
我有一个单例对象,它是我的应用程序的一个模块,并且在此模块中创建的所有对象与任何其他模块都没有关系。我的应用程序创建了这个单例对象,并且这个对象进一步创建了它的子对象,它们没有任何关系我的应用程序中除此模块之外的其他对象。因此,在此模块任务结束后,我将此模块对象设置为nil
。但是两个对象没有释放并显示在 xcode 的工具中。singelton 对象正在正确释放,但它的两个子对象仍然存在在记忆中。
我的项目完全是 ARC。那么编译器在其父(单例对象)设置为nil
.
提前致谢
但是两个对象没有在 xcode 的工具中释放和显示。singelton 对象正在正确释放,但它的两个子对象保留在内存中。
我担心有一个保留周期。
因此,例如 child1 指向 child2,反之亦然。要打破这个循环,您应该使用弱引用。
我看不到代码,所以这只是一个想法。
如果您在其中初始化更多对象,然后再次调用超级对象,则单例通常是一个问题。因为单例静态变量还没有赋值。
您可以通过执行以下操作来防止这种情况:
+ (SomeClass *)sharedInstance {
if (!_someStaticInstance) {
_someStaticInstance = [[SomeClass alloc]init];
}
return _someStaticInstance;
}
- (void)initialise {
// do the real initialising here
}
[[SomeClass sharedInstance] initialise];