1

我有一个共享实例(一个简单的数据控制器),在我的项目中我不使用 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];
}

正如我从泄漏工具中看到的那样——我这里有内存泄漏——我应该怎么做才能释放数据控制器?哪里更好呢?

4

1 回答 1

4

Rocky 是对的:你不会释放一个单例。坦率地说,我根本不会使用那种模式——除了像 AppDelegate 或 NSNotificationCenter 这样的系统调用。这种模式有很多陷阱......但这是我的观点(尽管我并不孤单)。

更重要的是,你为什么不使用 ARC?绝对没有理由不这样做,而且有很多原因。特别是对于新开发人员来说,当编译器会为你做这件事时,在内存管理上大惊小怪是没有意义的——而且会做得更好。你有足够的东西来学习,而不用担心保留计数!

于 2013-04-09T17:04:11.290 回答