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

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

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

[self performSelector:@selector(foo:) withObject:YES afterDelay:0.1f];

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

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

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

[self performSelector:@selector(foo:) withObject:[NSNumber numberWithBool:YES] afterDelay:0.5f];

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

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です