メソッドを呼び出すだけの場合は、標準の構文を使用できます。
[self meth2:next_int];
本当に を使用する必要がある場合は、電話performSelectorOnMainThread:
番号を で囲むことができNSNumber
ます。数値を変更する必要があるため、これを行うことはできないと言いますが、int を取り出して変更するだけです。
[self performSelectorOnMainThread:@selector(meth2:) withObject:[NSNumber numberWithInt:next_int] waitUntilDone:NO];
// ... later ...
- (void)meth2:(NSNumber *)number {
int myInt = [number intValue];
// do stuff with myInt
}
しかし、 への呼び出しからの出力として数値の値を取得したいということかもしれませんmeth2
。それがあなたの言いたいことなら、新しいオブジェクトを受け取ることができるように、二重ポインターを渡すことができます。
- (void)meth2:(NSNumber **)number {
int myInt = [*number intValue];
// do stuff with myInt
*number = [NSNumber numberWithInt:myInt];
}
// The caller can now operate like this:
NSNumber *number = [NSNumber numberWithInt:next_int];
[self performSelectorOnMainThread:@selector(meth2:) withObject:&number waitUntilDone:YES];
int returnInt = [*number intValue];
もちろん、それは実際にはスレッド セーフではないので、複数のスレッドで処理を行っている場合は、@synchronized
キーワードを使用してマルチスレッド アクセス変数にアクセスするか、アトミック プロパティ (つまり、 として宣言されていないプロパティ) を設定することをお勧めしますnonatomic
。
また、覚せい剤は体に悪いです!! 笑