Cha*_*bot 2 memory iphone memory-leaks objective-c nsdateformatter
我有一个视图控制器,在离开堆栈后,在Leaks仪器中显示内存泄漏.在阅读了很多关于NSDateFormatter bug的帖子,并实现了setDateFormat'Z'解决方法之后,我仍在泄漏内存(根据Instruments).
在我的标题中:
NSDateFormatter *dfm;
...
@property (nonatomic, retain) NSDateFormatter *dfm;
Run Code Online (Sandbox Code Playgroud)
在我的实施中:
@synthesize dfm;
...
- (void) viewDidLoad {
[super viewDidLoad];
dfm = [[NSDateFormatter alloc] init];
[self.dfm setDateFormat:@"h:mma Z"]; // leaks with & without this line
}
...
- (void)viewDidUnload {
//SOLUTION: This method was never being called. Needed to use dealloc, per the answer below.
[dfm release];
self.dfm = nil;
[super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)
有什么突出的不正确吗?我在这个类中用dfm做的唯一事情就是调用stringFromDate
几个地方来返回我用UILabel的自动释放的字符串.
提前致谢.
你不能依赖viewDidUnload
被召唤.你还需要:
- (void)dealloc {
self.dfm = nil;
// whatever else you need
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
您只需要self.dfm = nil
因为默认的合成setter将执行发布.