not available in automatic reference counting mode
現在、rutime.hを使って、それぞれ任意のメソッドを実行できる、任意のプロパティを読み書きできる、インスタンスフィールドを読み書きできるユーティリティをそれぞれ書いているのだが、最後に書いたインスタンスフィールドにアクセスするコードで、どうしてもコンパイルが通らない事象が発生した。
コードはこんな感じ (例外などは省略している)
Object+IvarUtil.m
+ (id)getIvar:(id)target forName:(NSString *)name { Ivar ivar = class_getInstanceVariable(target [name UTF8String]); id newVal; object_getInstanceVariable(target, [name UTF8String], &newVal); return newVal; }
確かにXcode上で同関数object_getInstanceVariableを選択すると赤線が引かれて使えないことを示唆されるのだが、リファレンスドキュメント等には特に明記されておらず、使えない理由が分らない。
エラー内容からARCが原因であることは間違い無い。引数の型がvoid**であることから、パラメタのオーナシップの移動に関してであろうことは想像に難くないが、「何故」駄目なのかをきちんと知りたいところ。