我有一个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。
答案 0 :(得分:2)
您有两种选择:
show:
方法以获取NSNumber
,然后将prev_image
包裹在NSNumber
或dispatch_after
。代码:
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。