我正在使用 Xcode 4.3.2 和 iOS 模拟器编写一个 iPad 应用程序。我有一系列类,我想在启动时向单例注册,以便其他类可以通过这些注册类提供的单例请求服务。
为了实现这种行为,我一直依赖于重写NSObject上的加载类方法。但是,我发现在有机会设置自动释放池之前,所有由load方法执行的代码都发生在 main 函数之外。我在我的应用程序中使用了一些 3rd 方技术,当前禁止使用或自动引用计数,因此我需要依靠自动释放池来帮助管理创建对象的生命周期。
在注册过程中,模拟器的调试控制台中出现了许多消息,抱怨在没有自动释放池的情况下调用了自动释放。其中之一与单例分配的字典有关。其他与从堆栈中复制并存储在该单例字典中的块对象有关。
我不清楚这些调试消息有多严重。我怀疑字典的分配可能没有问题,因为单例应该存在于应用程序的生命周期中,并且该字典可能永远不会被释放。同样,存储在字典中的块也应该保留,所以我想知道在调用复制方法后是否不需要在它们上调用 autorelease 。
或者,也许还有另一种方法可以完成我想要的,而不必诉诸当前可能不太成问题的技术
人们可以对这个问题提出什么建议?