如果我使用XCode 4工具分析我的程序,下面这行代码会导致“潜在泄漏的对象分配在127行”。
NSDateComponents *weekdayComponents = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] components:NSWeekdayCalendarUnit fromDate:[[NSDate date] dateByAddingTimeInterval:(60*60*24)]];如果我试图释放它([weekdayComponents release];),就会出现一条警告消息:“调用者此时未拥有的对象的引用计数递减不正确”。有什么想法吗?提前感谢!
发布于 2011-03-12 22:05:05
代码中的问题是您不能坚持使用NSCalendar对象,因此不能再释放它。
换句话说,您正在泄漏NSCalendar对象。如果您坚持在一条语句中包含所有内容,则应将其更改为:
NSDateComponents *weekdayComponents =
[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]
components:NSWeekdayCalendarUnit
fromDate:[[NSDate date] dateByAddingTimeInterval:(60*60*24)]
];更好的做法是将语句拆分:
NSCalendar *calendar =
[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[calendar
components:NSWeekdayCalendarUnit
fromDate:[[NSDate date] dateByAddingTimeInterval:(60*60*24)]
];
[calendar release];https://stackoverflow.com/questions/5282934
复制相似问题