Le code suivant implémente une sous-classe NSProxy qui transmet les méthodes à une instance NSNumber. Cependant, lorsque j'appelle [nsproxy floatValue], je reçois 0.0 sous GCC 4.2.-forwardInvocation fonctionne avec Clang - LLVM mais pas avec GCC
Sous LLVM-Clang, j'obtiens la bonne réponse 42.0.
Une idée de ce qui se passe?
(par la façon dont cela est en cours d'exécution dans la collecte des ordures)
-(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;
}
Merci pour la réponse clairement expliquée, j'ai pensé que c'était quelque chose à faire avec l'attente d'un retour de pointeur d'id comme apposé pour flotter. Je n'ai vu aucune documentation Apple sur l'écueil potentiel. – rebo