Objective-C:NSInvocationでタイマーのセレクタに自身以外の引数を渡す

タイマーのセレクタに引数を渡したい場合のメモ。

タイマーのセレクタに自身以外の引数を渡す

タイマーのセレクタ(メソッド名)に、Timer自身以外のオブジェクトを渡したいときは NSInvocation を使用する。

- (void)createTimer
{
    SEL sel = @selector(timerCall:text:);
    NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:sel];
    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
    [invocation setTarget:self];
    [invocation setSelector:sel];
    
    UILabel *mylabel = [UILabel alloc] int];
    NSString *mystr = @"myString";
    [invocation setArgument:(void *)&mylabel atIndex:2];
    [invocation setArgument:(void *)&mystr atIndex:3];
    
    [NSTimer scheduledTimerWithTimeInterval:3.0f invocation:invocation repeats:NO];
}

- (void)timerCall:(UILabel *)mylabel text:(NSString *)mystr
{
    mylabel.text = mystr;
    NSLog(@"label.text:%@",mylabel.text);
}

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents