Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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_Xcode - Fatal编程技术网

Iphone 为什么我的代码不起作用?(带返回的重复循环)

Iphone 为什么我的代码不起作用?(带返回的重复循环),iphone,objective-c,xcode,Iphone,Objective C,Xcode,我不知道为什么这个代码不起作用。关于它的整个想法是使价值更大,直到它大于分数 if(score > height && rocketlaunch == false) { @try { height = [self makebigger:height]; } @catch (NSException *exception) { height = height + 4000; } upgr

我不知道为什么这个代码不起作用。关于它的整个想法是使价值更大,直到它大于分数

if(score > height && rocketlaunch == false)
{
    @try
    {
         height = [self makebigger:height];
    }
    @catch (NSException *exception)
    {
         height = height + 4000;
    }
    upgradeRocket.center = CGPointMake((rand()%200), -50);
    rocketlaunch = true;
}

-(int)makebigger:(int)heightnr {
  heightnr = heightnr + (1000 * rand() %5);
  if(score > heightnr) {
    [self makebigger:heightnr];
    return heightnr;
  } else {
    return heightnr;
  }
}
有人知道如何解决这个问题吗?还是有别的办法

附言。 显示的错误为:

ARC不允许将int隐式转换为id

从结果类型为id的函数返回int的不兼容整数到指针转换

先谢谢你

编辑:

它是这样工作的,非常感谢:)

编辑:

我遇到了一个很难解决的新问题:


这就产生了错误>tread 1 exc bad acces code=2

我猜您的“score”变量是一个NSNumber。编译器正在抱怨,因为您试图将NSNumber(对象)与int进行比较

试试这个:

 if([score intValue] > heightnr)

我将猜测您的“score”变量是一个NSNumber。编译器正在抱怨,因为您试图将NSNumber(对象)与int进行比较

试试这个:

 if([score intValue] > heightnr)
-makebiger:(int)heightnr
更改为
-(int)makebiger:(int)heightnr

您必须指定返回类型

如果条件为真,你也必须返回一些东西


直到现在,我甚至不知道可以使用无返回类型。但显然是这样。

-makebiger:(int)heightnr
更改为
-(int)makebiger:(int)heightnr

您必须指定返回类型

如果条件为真,你也必须返回一些东西



直到现在,我甚至不知道可以使用无返回类型。但显然是这样。

假设
score
int
类型的实例变量,那么代码中有两个错误:首先,必须指定方法的返回类型,否则假定
id
;第二,每个路径都必须返回一个值,而递归调用并不能做到这一点。纠正这些错误会带来:

- (int)makebigger:(int)heightnr
{
   heightnr = heightnr + (1000 * rand() %5);
   if(score > heightnr)
      return [self makebigger:heightnr];
   else
      return heightnr;
}
虽然这适用于这样简单的基于值的算法,但更常见的是使用迭代而不是递归,如:

- (int)makebigger:(int)heightnr
{
   while (score > heightnr)
      heightnr = heightnr + (1000 * rand() %5);

   return heightnr;
}

假设
score
int
类型的实例变量,那么代码中有两个错误:首先,必须指定方法的返回类型,否则假定
id
;第二,每个路径都必须返回一个值,而递归调用并不能做到这一点。纠正这些错误会带来:

- (int)makebigger:(int)heightnr
{
   heightnr = heightnr + (1000 * rand() %5);
   if(score > heightnr)
      return [self makebigger:heightnr];
   else
      return heightnr;
}
虽然这适用于这样简单的基于值的算法,但更常见的是使用迭代而不是递归,如:

- (int)makebigger:(int)heightnr
{
   while (score > heightnr)
      heightnr = heightnr + (1000 * rand() %5);

   return heightnr;
}

什么类型的变量返回您的方法?如果我读了声明,我不知道,如果我在返回后读,它是一个整数…什么样的变量会返回你的方法?如果我阅读声明,我不知道,如果我在返回后阅读,它是一个整数…对于这个响应,它是有效的,但我不希望它在为真时返回,那么你知道如何在不给出错误的情况下修复它吗?你不必做
int a=[self-makebiger:heightnr]
,你可以做一个简单的
[self-makebiger:heightnr]
,返回值将消失。对于这个响应,它是有效的,但我不希望它在为真时返回,所以您知道如何在不给出错误的情况下修复它吗?您不必执行
int a=[self makebiger:heightnr]
,您可以执行一个简单的
[self makebiger:heightnr]
,返回值将消失。