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

投稿者: | 2014年8月29日
この記事は公開されてから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でラップする必要があります。

 


コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください