Objective-c 備忘録 id型の戻り値とselectorに関して
結構ハマったので、備忘録として。
オブジェクト以外の、値を戻り値とするファンクションがあったとします。
int testValue;
- (int)test
{
return testValue;
}
こんな感じ。
で、外部からselectorを使用してこのファンクションを実行しようとすると、
int myInt = [testObj performSelector:@selector(test)] intValue];
エラーになってしまうことがあります。
想像なのですが、値が代入されておらずデフォルト値でやり取りする際には大丈夫なようなのですが,
testValue = 1;
return testValue;
みたいな感じで一旦値を代入してから実行するとエラーになります。
おそらくは、performSelectorの戻り値の型が(id)なので、オブジェクトを返してあげないとダメみないです。
NSNumbger *testValue;
- (NSNumber *)test
{
return testValue;
}
こうやるとエラー出ません。