我有一个共享实例(一个简单的数据控制器),在我的项目中我不使用ARC。
static ECOMDataController *sharedInstanse;
@implementation ECOMDataController
+(ECOMDataController *)sharedInstance
{
return sharedInstanse;
}
-(id)init
{
[self checkAndCreateDataFileIfExist];
[self readAppFile];
if (sharedInstanse)
NSLog(@"The shared instance was created already.");
sharedInstanse = self;
return self;
}
我在其他方法中使用它:
- (void)viewDidLoad
{
[super viewDidLoad];
dataController = [ECOMDataController sharedInstance];
[dataController readAppFile];
[[self tableView] reloadData];
}
正如我从泄漏仪器中看到的那样 - 我这里有内存泄漏 - 我该如何释放数据控制器?哪个更好呢?
答案 0 :(得分:4)
Rocky是对的:你不会释放一个单身人士。坦率地说,我根本不会使用该模式 - 除了AppDelegate或NSNotificationCenter等系统调用。模式存在很多陷阱......但这是我的观点(虽然我并不孤单)。
更重要的是,你为什么不使用ARC?绝对没有理由不这样做,原因很多。特别是对于一个新的开发人员来说,无论如何,当编译器为你做这件事时,对于内存管理都没有任何意义 - 并且会更好地完成它。你有足够的学习而不必担心保留计数!