次のコードは、メソッドをNSNumberインスタンスに転送するNSProxyサブクラスを実装します。
ただし、[nsproxy floatValue]を呼び出すと、GCC4.2では0.0になります。
LLVM-Clangでは、正解42.0が得られます。
何が起こっているのか分かりますか?
(ちなみに、これはガベージコレクションの下で実行されています)
-(id) init;
{
_result = [NSNumber numberWithFloat:42.0];
return self;
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
return [[_result class] instanceMethodSignatureForSelector:aSelector];
}
- (void)forwardInvocation:(NSInvocation *)anInvocation
{
[anInvocation setTarget:_result];
[anInvocation invoke];
return;
}