Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 释放要再次使用的指针值?_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 释放要再次使用的指针值?

Iphone 释放要再次使用的指针值?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,当使用下面的行时,我会收到startTimer和stopTimer时间戳之间的差异,完美。但我的问题是,我似乎无法释放/释放startTimer和stopTimer,以便再次将它们用作新值。。有人能帮忙吗 基本上,在相同的视图中,我启动计时器,停止计时器,然后打印时差。然后我想用新的价值观重新开始整个过程 startTimer = [[NSDate alloc]init]; stopTimer = [[NSDate alloc]init]; newTime = [NSString stringW

当使用下面的行时,我会收到startTimer和stopTimer时间戳之间的差异,完美。但我的问题是,我似乎无法释放/释放startTimer和stopTimer,以便再次将它们用作新值。。有人能帮忙吗

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

startTimer = [[NSDate alloc]init];
stopTimer = [[NSDate alloc]init];
newTime = [NSString stringWithFormat:@"Time : %f", [stopTimer timeIntervalSinceDate:startTimer]];
我试着使用:(但它们似乎不起作用)


使用这些时,应用程序在我第二次使用它们时崩溃。

您不需要调用dealloc。当对象的refcount降至0时,将在对象释放后调用它


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

您只需调用
release
即可放弃您对相关对象的兴趣/所有权,然后再根据需要分配/初始化对象

对于直接调用
dealloc
,您应该永远不要这样做(除了在您创建的任何dealloc方法结束时调用
[super dealloc];
),因为所涉及的对象可能仍在其他地方使用。(在您提供的示例中,这显然是不可能的,但这是一个很好的启发。)


老实说,我建议您仔细阅读,因为这将在将来产生回报。

您可以在分配和初始化计时器之后调用release,这样您将拥有更新的计时器

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

我想这对你有帮助

更正。。除非打电话给[super dealloc]:-)谢谢-我现在就试试这个!干杯,伙计们,我会读一读——我想这已经解决了我的问题:)到目前为止还没有奇怪的崩溃,应用程序正在按预期工作很好的一个-让我试试这个,我会用我的resetUI方法创建发布程序更具体地说,你不能自己调用
dealoc
。只有一个例外:您必须在自己的
dealloc
override中调用
[super dealloc]
。一般来说,是的,当然。但是在这个特定问题的上下文中——不需要调用dealloc——释放就足够了,因为当refcount下降到0时,运行库将自动调用dealloc。
[startTimer release];
[stopTimer release];
startTimer = [[NSDate alloc]init];
stopTimer = [[NSDate alloc]init];