objective-ccocoa-touchcocoaperformselector

Return value for performSelector:


What will the return value for performSelector: if I pass a selector that returns a primitive type (on object), such as 'week' on NSDateComponents (which will return an int)?


Solution

  • An example of using NSInvocation to return a float:

    SEL selector = NSSelectorFromString(@"someSelector");
    if ([someInstance respondsToSelector:selector]) {
        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
                                    [[someInstance class] instanceMethodSignatureForSelector:selector]];
        [invocation setSelector:selector];
        [invocation setTarget:someInstance];
        [invocation invoke];
        float returnValue;
        [invocation getReturnValue:&returnValue];
        NSLog(@"Returned %f", returnValue);
    }