【问题标题】:NSDate been released automatically resulting Bad exe error. iPhoneNSDate 被自动释放导致 Bad exe 错误。苹果手机
【发布时间】: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 问题,但我将其格式化为最初编写为字符串的方式。

我做错了什么?我不能再为此浪费一天了。

欢呼

【问题讨论】:

    标签: iphone release nsdate retain


    【解决方案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];

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          • 1970-01-01
          相关资源
          最近更新 更多