【发布时间】:2012-06-09 15:05:47
【问题描述】:
我想知道最安全的方法是释放一个对象并重新实例化它。
我正在做的是这个,它似乎可以工作,但我不确定这是否会造成内存泄漏?
- (void)reLoadCalendarObject
{
if (self.calViewController != nil)
self.calViewController = nil; //release instantiated object
CalViewController *tempCalViewController = [[CalViewController alloc]initWithDate:[NSDate dateWithTimeIntervalSinceNow:0.0f] observer:self];
self.calViewController = tempCalViewController;
[tempCalViewController release];
self.calViewController.dataSource = self.calendarDataSource;
}
self.calViewController 属性声明为(nonatomic,retain)
【问题讨论】:
-
是什么让您认为它可能导致内存泄漏? ...这很好
-
因为我认为你必须使用'release'关键字才能真正从内存中释放一个对象,就像在dealloc中发生的那样。
-
在 Instruments 中运行它,看看它是否会造成泄漏。
-
@Oysio 如果您使用
@synthesize和@property和retain,编译器会将正确的内存管理放在合成的getter 和setter 中。在这种情况下,setter 将正确释放旧值并将 ivar 设置为nil
标签: iphone objective-c memory-leaks