gpt4 book ai didi

iphone - NSDate alloc init & 获取发送到释放实例的消息

转载 作者:行者123 更新时间:2023-11-28 23:14:54 28 4
gpt4 key购买 nike

我知道获取新 NSDate 的首选方法是 [NSDate date]。但我很困惑为什么下面的代码会抛出异常“消息发送到释放的实例”

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy"];
NSDate *dateFromStr = [[NSDate alloc] init];
// produce date object

dateFromStr = [dateFormatter dateFromString:self.releaseDate];

[dateFormatter setDateFormat:@"MM.dd.yyyy"];
NSString *strDate = [dateFormatter stringFromDate:dateFromStr];

[dateFormatter release];
[dateFromStr release];

此代码位于一个 View Controller 中,该 View Controller 被另一个 View Controller 用作“虚拟” View 。类似于以下内容:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html

最佳答案

您的第一个问题是您通过分配 NSDate 对象来声明 dateFromStr,然后在将第一次调用的结果分配给 dateFromStr 时泄漏该对象:。您可以这样简化(并消除泄漏):

NSDate *dateFromStr = [dateFormatter dateFromString:self.releaseDate];

你需要知道的是你没有分配这个对象,所以你不需要释放它。除非您调用类似 alloc 的方法(还有其他一些方法;在 SO 中搜索有关内存管理的其他帖子),否则您无需负责释放对象。

所以在您发布的代码中,最后一行是释放您未分配的对象并导致您的错误。

关于iphone - NSDate alloc init & 获取发送到释放实例的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com