forwardInvocation меня не вызывают?

У меня проблемы с пересылкой вызова на работу. По какой-то причине среда выполнения Objective-C полностью игнорирует мой метод forwardInvocation: и выдает исключение нераспознанного селектора.

Мой тестовый код выглядит следующим образом:

@interface InvocationTest : NSObject
{
}

+ (void) runTest;

@end


@interface FullClass: NSObject
{
    int value;
}
@property(readwrite,assign) int value;

@end

@implementation FullClass

@synthesize value;

@end


@interface SparseClass: NSObject
{
}

@end

@implementation SparseClass

- (void)forwardInvocation:(NSInvocation *)forwardedInvocation
{
    NSLog(@"ForawrdInvocation called");

    FullClass* proxy = [[[FullClass alloc] init] autorelease];
    proxy.value = 42;
    [forwardedInvocation invokeWithTarget:proxy];
}

@end


@implementation InvocationTest

+ (void) runTest
{
    SparseClass* sparse = [[[SparseClass alloc] init] autorelease];
    NSLog(@"Value = %d", [sparse value]);
}

@end

Я работаю над информацией из следующих ресурсов:

http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding. *** Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '- [SparseClass value]: нераспознанный селектор отправлен в экземпляр 0x4b1c4a0'

19
задан Karl 6 January 2011 в 23:05
поделиться