尝试将整数传递给方法时出错 - iOS

时间:2013-11-20 17:44:57

标签: ios cocoa-touch function methods int

我有一个UIButton,当按下时会将整数传递给我设置的简单方法。但是我继续收到这个错误:

Implicit conversion of 'int' to 'id' is disallowed with ARC

这是我的代码:

[self performSelector:@selector(show:) withObject:prev_image afterDelay:2.0];

我不只是做[self show:prev_image]的原因是因为我希望在调用方法之前有延迟。

谢谢你的时间,Dan。

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 更改show:方法以获取NSNumber,然后将prev_image包裹在NSNumber
  2. 使用dispatch_after
  3. 代码:

    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [self show:prev_image];
    });
    

答案 1 :(得分:1)

prev_image是一个int,其中'object'必须传递给performSelector方法。

我建议你这样做:

[self performSelector:@selector(show:) withObject:@(prev_image) afterDelay:2.0f];

我还建议您在Objective-C中使用简单的样式进行编程时将prev_image更改为prevImage

此处不需要使用dispatch_after,在解决iOS开发中的问题时,您几乎肯定希望保持尽可能高的水平。

我为不清楚而道歉。

您还需要更改show:

的方法签名和实现
- (void)show:(NSNumber *)number
{
    NSInteger integerNumber = [number integerValue];
}

答案 2 :(得分:0)

一种解决方案是使用[NSNumber numberWithInt:prev_image]代替prev_image。此外,您还需要将show:方法更改为采用NSNumber而不是int。