NSDate 被自动释放导致 Bad exe 错误。苹果手机
Posted
技术标签:
【中文标题】NSDate 被自动释放导致 Bad exe 错误。苹果手机【英文标题】:NSDate been released automatically resulting Bad exe error. iPhone 【发布时间】:2011-06-27 20:27:41 【问题描述】:我花了一整天的时间来研究这个,重写了很多次试图弄清楚它。
我在标题中声明了一组日期
@property (nonatomic, retain)NSDate *time;
在加载视图时,我从数据库中读取了一个字符串,将其转换为日期并将其设置为该变量。
NSDateFormatter *dateFormatter =[[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"dd / MMMM / yyyy"];
time=[dateFormatter dateFromString:datetime];
如果我 NSLog 时间我得到预期的日期(虽然不是正确的格式)。如果我随后在视图中进一步使用 NSDate,我会收到 Bad Exe 错误,或者由于时间而导致的错误 = 为零。
我不明白它几乎就像它不保留它一样。
在解决问题时,我在 IBAction 中创建了一个新日期,并尝试复制上面的代码,但在需要的地方,我遇到了同样的问题。我认为这是 dateformat 问题,但我将其格式化为最初编写为字符串的方式。
我做错了什么?我不能再为此浪费一天了。
欢呼
丹
【问题讨论】:
【参考方案1】:您需要将该属性设为self.time = [dateFormatter dateFromString:datetime];
或[self setTime: [dateFormatter dateFromString:dateTime]]
如果你只是用=赋值而不用self,它不会保留它,它只会传递指针。使用点运算符将使其保留它。
【讨论】:
非常感谢。恼人的事情就是这么简单。这也是解释为什么!非常感谢。【参考方案2】:问题是,您没有设置属性。 time
没有使用点符号。您要么必须将其写为(假设该属性存在于 self 上),它是以下两种方式之一:
self.time = [dateFormatter dateFromString:datetime];
或
[self setTime: [dateFormatter dateFromString:datetime]];
【讨论】:
【参考方案3】:您需要使用
将其分配给您的属性self.time = [dateFormatter dateFromString:datetime];
否则不会保留
【讨论】:
哇 - 1 分钟内有四个几乎相同的答案 :-)【参考方案4】:尝试使用 self.time ,这将通过生成的 setter 方法,该方法将保留日期,此时您只是将其分配给实例变量。
【讨论】:
【参考方案5】:您需要使用:self.time = [dateFormatter dateFromString:datetime];
【讨论】:
以上是关于NSDate 被自动释放导致 Bad exe 错误。苹果手机的主要内容,如果未能解决你的问题,请参考以下文章
以“new”前缀开头的属性名称导致 iOS 中的 BAD_ACCESS 错误