ios - iOS 共享实例在哪里释放

标签 ios objective-c memory-management

我有一个共享实例(一个简单的数据 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/

相关文章:

ios - 自定义导航栏全 View 不接收触摸事件

ios - 实现Apple TV collectionview水平无限滚动

objective-c - 跟随手指旋转的炮塔/大炮的 iOS 数学

ios - 如何将 AFOAuth1Client 与 AFIncrementalStore 一起使用

IOS字符串长度比较问题

iphone - 你能帮我理解 cocoa/objective-c 中的保留计数吗?

iphone - 我如何在方法中使用此值 - Objective C

ios - 为 BOOL 变量编写 getter 和 setter

c++ - 使用新放置时删除此选项的替代方法

C++内存对齐