Mar*_* S. 1 iphone memory-leaks objective-c instruments
我正试图测试我的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;
}
Run Code Online (Sandbox Code Playgroud)
它正在泄漏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;
Run Code Online (Sandbox Code Playgroud)
如果您的settingsManager属性设置为,retain那么您将使用该行保留一个对象两次:self.settingsManager = [[VacaCalcSettingsManager alloc] initWithManagedObjectContext:self.moc];
尝试添加autorelease到alloc]init或创建上VacaCalcSettingsManager一类方法,它返回一个autoreleased对象.否则,您可以重新声明您的财产,assign以便它不会再次保留该对象.