1

バックグラウンドスレッドで実行されているメソッドからメインスレッドで実行されるメソッドに 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 *')
4

1 に答える 1

4

NSTimeInterval はオブジェクトではありません。NSNumber を試してみてください。

NSTimeInterval delayBetweenIntAdsNSTimeInterval = [responseStringTimeBetweenAds doubleValue];
[self performSelectorOnMainThread:@selector(startTimerForAds:) withObject:@(delayBetweenIntAdsNSTimeInterval) waitUntilDone:NO];


-(void)startTimerForAds:(NSNumber *)intervalBetweenAds {

     NSTimeInterval i = [intervalBetweenAds doubleValue];

}

あなたの更新により更新されました:

[self performSelectorOnMainThread:@selector(startTimerForAds:) withObject:@(delayBetweenIntAds) waitUntilDone:NO];

-(void)startTimerForAds:(NSNumber *)intervalBetweenAds {
     int i = [intervalBetweenAds intValue];
}
于 2013-03-27T20:26:01.873 に答える