我有一个单例作为类方法:
+(WordsModel *) defaultModel{
static WordsModel *model = nil;
if (!model) {
model = [[[self alloc] init] autorelease];
}
return model;
}
方法内的模型静态引用会发生什么?会不会被释放?
答案 0 :(得分:3)
它不仅会被释放(因为你发送了-autorelease
消息),你下次尝试使用它可能会导致崩溃,因为model
指针未被设置为nil对象被释放了。因此,它将指向内存,或者是垃圾,或者(如果该内存已被重用)与不同于预期的对象。
答案 1 :(得分:1)
它将无法正常运行,因为您正在自动释放您的班级实例......
在下一个runloop中,它将被释放......
看看标准的单身人士模式: http://www.cocoadev.com/index.pl?SingletonDesignPattern
静态实例应该是一个全局变量,当你的应用程序退出时将被释放...