【问题标题】:Cannot figure out how to get rid of memory leak无法弄清楚如何摆脱内存泄漏
【发布时间】:2011-02-18 06:44:38
【问题描述】:

我正在尝试测试我的 iphone 中的内存泄漏,但我没有太多运气摆脱这个问题。这是泄漏的代码。


- (id)initWithManagedObjectContext:(NSManagedObjectContext *)aMoc delegate:(id)aDelegate runSync:(BOOL)aRunSync {
    if (self = [super init]) {
        self.moc = aMoc;
        self.settingsManager = [[VacaCalcSettingsManager alloc] initWithManagedObjectContext:self.moc];
        self.delegate = aDelegate;
        calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        self.runSync = aRunSync;
    }

    return self;
}

它在self.settingsManager = [[VacaCalcSettingsManager alloc] initWithManagedObjectContext:self.moc]; 行上泄漏。

self.settingManager实例变量在类的dealloc方法中释放。

我不确定还有哪些相关信息。请告诉我,我可以提供。

感谢您的帮助。

-马克

这是头文件。


@interface VacaCalcCalculation : NSObject {
    NSManagedObjectContext *moc;
    VacaCalcSettingsManager *settingsManager;
    id delegate;
    NSCalendar *calendar;
    NSDate *nextBankLimitDate;
    BOOL runSync;
}

@property (nonatomic, retain) NSManagedObjectContext *moc;
@property (nonatomic, retain) VacaCalcSettingsManager *settingsManager;
@property (nonatomic, retain) id delegate;
@property (nonatomic, retain) NSCalendar *calendar;
@property (nonatomic, retain) NSDate *nextBankLimitDate;
@property (nonatomic) BOOL runSync;

- (id)initWithManagedObjectContext:(NSManagedObjectContext *)aMoc delegate:(id)aDelegate;

【问题讨论】:

  • 不是 iPhone 开发人员,所以这可能是我对系统如何工作的知识缺乏了解,但看起来日历只是设置了一个新值,并且什么也没做。也许那里发生了什么事?
  • 显示实例变量的头文件声明。

标签: iphone objective-c memory-leaks instruments


【解决方案1】:

如果您的settingsManager 属性设置为retain,那么您将使用以下行保留一个对象两次:self.settingsManager = [[VacaCalcSettingsManager alloc] initWithManagedObjectContext:self.moc];

尝试将autorelease 添加到alloc]init 或在返回自动释放对象的 VacaCalcSettingsManager 上创建类方法。否则,您可以使用 assign 重新声明您的属性,这样它就不会再次保留该对象。

【讨论】:

  • 或者直接分配给 settingsManager 而不是调用 [self setSettingsManager:]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多