释放指针值再次使用?

时间:2011-05-02 14:03:35

标签: iphone objective-c cocoa-touch

使用下面的行时,我会收到startTimer和amp;之间的区别。 stopTimer时间戳,完美。但我的问题是,我似乎无法释放/解除startTimer& amp; stopTimer让我可以再次使用它们作为新的价值..任何人都可以帮忙吗?

基本上,在同一视图中,我启动计时器,停止计时器,然后打印时差。然后我想用新的价值再次开始整个过程​​。

startTimer = [[NSDate alloc]init];
stopTimer = [[NSDate alloc]init];
newTime = [NSString stringWithFormat:@"Time : %f", [stopTimer timeIntervalSinceDate:startTimer]];

我尝试使用:(但它们似乎不起作用)

[startTimer dealloc];
[stopTimer dealloc];

[startTimer release];
[stopTimer release];

startTimer = nil;
stopTimer = nil;

使用这些时,应用程序第二次使用时会崩溃。

3 个答案:

答案 0 :(得分:0)

您无需调用dealloc。当它们的引用计数降为0时,在对象被释放后调用它。

[在这种情况下 - 在release消息调用之后]

答案 1 :(得分:0)

如果需要,在再次分配/启动对象之前,您应该简单地调用release放弃对相关对象的兴趣/所有权。

就直接调用dealloc而言,你应该从不这样做(分开,当你在任何dealloc结束时调用[super dealloc];时你创建的方法,因为有问题的对象可能仍在其他地方使用。 (这显然不可能在你提供的例子中,但它是一个很好的启发式观察。)

老实说,我建议彻底阅读Memory Management Programming Guide,因为这将在未来带来好处。

答案 2 :(得分:0)

你可以在分配和初始化定时器之后调用release。在这种情况下,你将拥有更新的定时器。

[startTimer release];
[stopTimer release];
startTimer = [[NSDate alloc]init];
stopTimer = [[NSDate alloc]init];

我认为这会对你有帮助!