我有一个共享实例(一个简单的数据 Controller ),在我的项目中我不使用 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];
}
正如我从泄漏工具中看到的那样——我这里有内存泄漏——我应该怎么做才能释放数据 Controller ?哪里更好呢?
最佳答案
Rocky 是对的:你不会释放一个单例。坦率地说,我根本不会使用那种模式——除了像 AppDelegate 或 NSNotificationCenter 这样的系统调用。这种模式有很多陷阱......但这是我的观点(尽管我并不孤单)。
更重要的是,你为什么不使用 ARC?绝对没有理由不这样做,而且有很多原因。特别是对于新开发人员来说,当编译器会为你做这件事时,在内存管理上大惊小怪是没有意义的——而且会做得更好。你有足够的东西来学习,而不用担心保留计数!
关于ios - iOS 共享实例在哪里释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907562/