我有一个静态方法,它创建类的一个实例并将其放入静态变量中。我想知道在这种情况下正确的内存管理方式是什么。Objective-C/iPhone内存管理静态变量
你不能把它在的dealloc法,因为它虽然可以访问静态变量,得到新版本发布也将释放sharedInstance所创建的任何实例方法。
我猜有可能是创建一个静态的破坏方法,这将manualy释放内存,并可以通过从appWillTerminate用户调用的一个选项,但似乎有点奇怪。
所以,再次,问题: 什么是释放静态变量的正确方法?
// MyClass.m
#import "MyClass.h"
static MyClass *myClass; // How to properly do memory management
@implementation MyClass
+ (MyClass *)sharedMyClass {
if (myClass == nil) myClass = [[MyClass alloc] init];
return myClass;
}
@end
需要注意的是,如果你有一个单身一件事可能是一个好主意,做的是有某种清理的方法,也可以通过应用程序委托调用当它得到一个低内存警告。你甚至可以在那个时候转储整个静态对象,并且如果创建不是太昂贵的话就让它重新创建。 – 2009-10-22 16:10:32