【发布时间】:2013-03-18 02:21:59
【问题描述】:
我正在尝试将 NSTimeInterval 从在后台线程上运行的方法发送到将在主线程上运行的方法。不幸的是,我收到了这个错误:
Sending 'NSTimeInterval' (aka 'double') to parameter of incompatible type 'id'
这是我的代码 - 知道出了什么问题吗?
首先,我设置我的 NSTimerInterval,然后调用 performSelectorOnMainThread:
NSTimeInterval delayBetweenIntAdsNSTimeInterval = [responseStringTimeBetweenAds doubleValue];
[self performSelectorOnMainThread:@selector(startTimerForAds:) withObject:delayBetweenIntAdsNSTimeInterval waitUntilDone:NO];
这是我正在调用的方法的代码:
-(void)startTimerForAds:(NSTimeInterval)intervalBetweenAds {
}
你有什么想法吗?
谢谢,
更新
我打电话:
[self performSelectorOnMainThread:@selector(startTimerForAds:) withObject:@(delayBetweenIntAds) waitUntilDone:NO];
这是那个方法:
-(void)startTimerForAds:(NSInteger *)intervalBetweenIntAdsInteger {
}
但是通过那个调用(通过对象),XCode 显示:
Illegal type 'NSInteger *' (aka 'int *') used in a boxed expression
它显示在 [intervalBetweenIntAdsInteger doubleValue] 上:
Bad receiver type 'NSInteger *' (aka 'int *')
【问题讨论】:
-
什么是 responseStringTimeBetweenAds ?字符串?
-
是的,responseStringTimeBetweenAds 是一个包含整数的字符串,所以我使用 doubleValue 将该整数转换为双精度
-
NSTimeInterval 不是一个对象。试试 NSNumber。
-
@DigiMonk - 你是说发送 NSNumber 并在我发送 NSNumber 的方法中将其转换为 NSTimeInterval 吗?
-
是的,因为 NSTimeInterval 不是一个对象。看看我的回答,希望有用
标签: iphone objective-c methods parameters