makotton.com

performSelectorでプリミティブ型の変数を引数として渡す方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

たとえば、BOOL型を渡したい時、

[bash language=”gutter=0″]
[self performSelector:@selector(foo:) withObject:YES afterDelay:0.1f];
[/bash]

このように直接指定してしまうと、

Implicit conversion of ‘BOOL’ (aka ‘signed char’) to ‘id’ is disallowed with ARC

怒られます。オブジェクト型(id)のみ受け付ける仕様のためです。このような場合はNSNumberでラップすることで渡すことができます。

[bash language=”gutter=0″]
[self performSelector:@selector(foo:) withObject:[NSNumber numberWithBool:YES] afterDelay:0.5f];
[/bash]

これでOKです。BOOLの他にも、int、doubleなどのプリミティブ型はNSNumberでラップする必要があります。

 

モバイルバージョンを終了