仪器报告了这种方法100%的泄漏:在+内存泄漏初始化
+(void)initialize{
mapper = [[NSMutableDictionary alloc] init];
}
假设仪器不报告误报,可能导致这个什么可能发生的情况?多线程(尽管文档说它是以“线程安全的方式”调用的)?
这是非ARC。
仪器报告了这种方法100%的泄漏:在+内存泄漏初始化
+(void)initialize{
mapper = [[NSMutableDictionary alloc] init];
}
假设仪器不报告误报,可能导致这个什么可能发生的情况?多线程(尽管文档说它是以“线程安全的方式”调用的)?
这是非ARC。
使用自动释放池:
+(void)initialize {
@autoreleasepool {
mapper = [[NSMutableDictionary alloc] init];
}
}
在这种情况下,对象的创建可能会导致自动释放物体(例如内部或的NSMutableDictionary的实现内暂时的)。当然,如果这是问题,你会看到“......自动释放,没有到位 - 只是泄漏”控制台中的消息。
你还应该考虑懒惰地初始化你的共享/全局的东西,或者在你的应用程序完成启动后。
如果你没有看到这些消息,那么这将不适用。
仪器*有*有时会报告误报。 (但是,这个实际上是一个泄漏)。 – 2012-08-28 18:00:05