2

私はまだObjective C構文に慣れていないので、これを複雑にしすぎているかもしれませんが、NSTimeIntervalをスレッドに渡す方法を理解できないようです。

次のように、メインスレッドから送信された x 秒間パラメーターをスリープするスレッドを開始したいと思います。

[NSThread detachNewThreadSelector:@selector(StartServerSynchThread) toTarget:self withObject:5];

- (void) StartServerSynchThread:(NSTimeInterval *)sleepSecondsInterval {

    [NSThread sleepForTimeInterval:sleepSecondsInterval];

}

しかし、コンパイラは私に構文エラーを与え続けます。それがどのように行われるべきか正確にはわかりません。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

12

これは@Georgの回答とほぼ同じですが、適切なタイプを使用しています。:)

NSTimeInterval をNSNumber(のサブクラスNSValue) にボックス化する場合は、代わりにそれを渡すことができます。

[NSThread detachNewThreadSelector:@selector(startServerSynchThread:) 
                         toTarget:self 
                       withObject:[NSNumber numberWithDouble:myTimeInterval]];

- (void) startServerSynchThread:(NSNumber *)interval {
  [NSThread sleepForTimeInterval:[interval doubleValue]];
}
于 2010-06-20T16:28:14.223 に答える
2

objectパラメータには型があります。idつまり、クラス型のオブジェクトのみを渡すことができます。5あなたが渡そうとしているような整数、およびNSTimeInterval(実際には単なるtypedeffor double)は、クラス型ではなく基本型です。

NSNumberラッパーとして使用するか、代わりに a を渡すことができますNSDate

于 2010-06-20T16:06:08.103 に答える