objective c - 不使用返回值调用对象返回方法

时间:2009-08-14 22:35:06

标签: objective-c methods return-value call nstimer

我知道调用一个方法好像它是无效的,即使它有一个返回值(比如printf),但是这个怎么样?

[NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(method) userInfo:nil repeats:NO];

我可以让它漂浮在那里而不使用它返回的对象吗?这就像调用[NSObject alloc]而不将其分配给指针或任何东西。这是内存泄漏吗?原因是我不想将它分配给变量(计时器),因为如果我释放(或自动释放)它会在它触发之前被删除。而且我不想使用伊娃。那我该怎么办?

编辑:我发现了[self performSelector:@selector(myMethod)withObject:nil afterDelay:0.3];这比使用计时器要好得多。

1 个答案:

答案 0 :(得分:2)

此调用创建的NSTimer由当前的NSRunLoop对象拥有,因此不会被任何自动释放池权限自动释放。手动释放它是错误的。应该通过发送无效消息来删除NSTimer:

  

要请求从NSRunLoop对象中删除计时器,请从安装计时器的同一线程向计时器发送invalidate消息。此消息立即禁用计时器,因此它不再影响NSRunLoop对象。运行循环在invalidate方法返回之前或之后的某个时间点删除并释放计时器。

所以基本上你应该有一个变量并使用无效而不是发布