在obj-c / iPhone SDK中如何获得一个自己调用的方法?

时间:2009-03-27 23:59:42

标签: iphone objective-c

我有一个方法需要重复,直到满足某个条件。我使用的声明如下:

if(条件不符合){

再次运行此方法

} 别的{

}

但我不知道如何'再次运行此方法'。该方法称为runAction,因此我尝试了[self runAction],但它导致了运行时错误。

任何帮助表示感谢。

由于

2 个答案:

答案 0 :(得分:3)

从内部调用方法是合法的,但如果调用无穷大,最终可能会出现堆栈溢出

- (void)runAction
{
    [self runAction]; // Stack Overflow on this line ;)
}

答案 1 :(得分:2)

rpetrich给了你正确的答案,但是你考虑过使用循环吗?

while (condition is not met)
{
  // logic that affects condition.
}

此外,如果'条件'依赖于外部力量(用户输入,下载等),那么这些都不正确并且您可能导致死锁 - 这是两个案例无法完成的原因,因为它们都在等待另一个。

如果是这种情况,你应该使用一个每隔XXX秒左右检查一次条件的计时器。最简单的方法是使用'performSelector'函数,该函数可用于在指定的时间后触发调用。

E.g。

-(void)someFunc
{
  if(!condition)
  {
    [self performSelector:@selector(someFunc) withObject:nil afterDelay:1.0];
  }
}