1

performSelector:WithObject:afterDelay を使用して呼び出されるメソッドに NSInteger 引数を渡したいので、次のコードを作成します。

   id arg = [NSNumber numberWithInt:myIdentifier]; 
   [self performSelector:@selector(myMethod:) withObject:arg afterDelay:kDuration];


    - (void) myMethod: (id) identifier
    {
    ...
    }

myMethod: 内で、識別子を id から NSInteger に変換するにはどうすればよいですか?

この前の質問を見てきました: SEL performSelector と引数

しかし、私は myMethodForNumber を理解していません: - 番号をアンボックスするためにどのように使用されていますか?

4

3 に答える 3

2

myMethodNSNumberをパラメーターとして受け入れることができます。NSNumberその後、インスタンス メソッドを使用して整数値を取得できます。

- (void)myMethod:(NSNumber *)number {
    NSInteger value = [number integerValue];
}
于 2012-08-15T16:17:42.313 に答える
0

タイプがわかっている場合は、値をキャストできます。

- (void) myMethod: (id)identifier
{
    NSNumber *myNumber = (NSNumber *)identifier;
}

または、メソッドが取る型を指定することもできます:

- (void) myMethod:(NSNumber *)myNumber
{
    // Use myNumber
}
于 2012-08-15T16:17:14.513 に答える