我在修复仪器检测到的泄漏方面遇到了一些麻烦。我正在尝试使用dateByAddingComponents:toDate:options:
的{{1}}方法在循环中减少日期,并且我一直在泄漏NSCalendar
个对象(确切地说是49个)。
以下是我的代码:
NSDate
我试图通过几种不同的方式解决这个漏洞,但由于我不明白它为什么泄漏,我真的不知道我在做什么。您是否有任何线索可以帮助我解决此问题,因为我知道我不想使用NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// Get current date
NSDate *date = [NSDate date];
// Create an NSDateComponents object that will be used to decrement the date
NSDateComponents *decStep = [[NSDateComponents alloc] init];
[decStep setDay:-1];
for (NSUInteger i = 49; i >= 0 ; i--)
{
// Insert the date object in an array
[self.fooArray insertObject:date atIndex:0];
// Decrement the date
date = [gregorian dateByAddingComponents:decStep toDate:date options:0];
}
// Release calendar and date components objects
[decStep release];
[gregorian release];
?
答案 0 :(得分:1)
为什么你认为你在泄漏?如果只是仪器报告你现在已经有50个以上的日期对象,那就是这样。它们将被保留,直到你将self.fooArray设置为其他东西,此时(如果你使用setter),它们将被释放。
答案 1 :(得分:0)
我看到没有内存泄漏。您在fooArray
中获得50个日期,即阵列保留的50个对象。那不是泄密。
答案 2 :(得分:0)
dateByAddingComponents:toDate:options
会创建一个新的日期对象,并在其上调用autorelease。您需要一个NSAutoReleasePool来摆脱这些实例。