2011-08-17 93 views
2

我已经浏览过发布的问题,并且有很多提示我尝试使用。不幸的是我没有解决问题。NSDate创建内存泄漏

我只是有下面的代码:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
NSDate *date = [[NSDate alloc] init]; 
self.timestamp = date; 
[date release]; 

[pool release]; 

但仍有在的NSDate的分配线内存泄漏。我在没有AutoreleasePool的情况下尝试了它,我尝试使用流而不是释放池,我甚至尝试使用静态NSDate日期方法。但我没有摆脱内存泄漏。

我还是不明白。任何帮助,高度赞赏。

回答

1

只写

self.timestamp = [NSDate date]; 

,而不是给定的代码块,它会工作没有泄漏。

+0

不幸的是,这也不起作用。当分析内存泄漏的代码时,我仍然得到了100.0%的线路。 –

+0

您的课堂中设置的timestamp属性如何? – Daniel

+0

@彼得·奥斯堡,请告诉我一件事什么是Datatype类的时间戳????? – Tirth

1

[timestamp release]在您的dealloc执行? IE:

-(void)dealloc { 
    // ... your other retained property/ivar releases ... // 
    [timestamp release]; 
    [super dealloc]; 
} 

另外,如果你在一个标准的iOS项目运行时,你不应该需要建立自己的NSAutoreleasePool(除非你在一个紧密的循环或线程执行是)。

+0

是的。当我执行分析时,我会在日期初始化时看到内存泄漏。这就是为什么我非常困惑。它可能是SDK中的问题吗? –

+0

我希望泄漏显示在那里,因为那是泄漏的对象被分配的地方。不一定需要做出与众不同的事情。 –

+0

你是否将任何东西直接分配给'timestamp' ivar而不先释放它?任何沿着'timestamp = [NSDate someKindOfNSDate]'行的行;''不会在'[timestamp release]之前';调用可能会导致一个泄漏,它会跟踪你的alloc。 –