使用下面的行时,我会收到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;
使用这些时,应用程序第二次使用时会崩溃。
答案 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];
我认为这会对你有帮助!