我有一個靜態方法,它創建類的一個實例並將其放入靜態變量中。我想知道在這種情況下正確的內存管理方式是什麼。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