代码之家  ›  专栏  ›  技术社区  ›  AlvinfromDiaspar

NSDATE*在几个渲染周期后损坏。为什么?

  •  0
  • AlvinfromDiaspar  · 技术社区  · 14 年前
    • 我有一个1.5秒间隔的常规计时器(渲染周期)。
    • 我有一个具有nsdate*成员/属性(非原子,保留)的类。
    • 我通过调用[callingclass set date:expirationdate]来设置此日期;

    现在。。。此nsdate有效的几个渲染周期。然而,在第三个循环中,这个变量的值似乎被破坏了。

    当我设置一个断点时,我注意到我可以悬停鼠标并看到正确显示的数据(当它有效时)。但是,当它无效时,我要么看到“超出范围”,一些奇怪的字符串(看起来有点像库文件名之类),要么在极少数情况下,调试器不会显示任何变量的值(我讨厌在Xcode中调试)。

    所以这就是为什么我认为这个变量在某种程度上被破坏了。 我应该将这个合成属性设置为(非原子,保留)?还是应该把它声明为其他东西?

    1 回复  |  直到 14 年前
        1
  •  0
  •   AlvinfromDiaspar    14 年前

    我想我发现了问题。 我有一个方法叫做: - (NSDate*) getNSDateFromString:(NSString*)stringDate;

    当我调用此函数时,我正在执行nsdate*date=[self getnsdatefromstring:expirationstring]; 这导致了我上面描述的行为。

    然后我把它改成了以下几项,消除了碰撞:

    NSDate *date = [[self getNSDateFromString:expirationString] retain]; // do something with the date here... [data release];