मुझे काम करने के लिए आगे बढ़ने में परेशानी हो रही है। किसी कारण से, उद्देश्य-सी रनटाइम पूरी तरह से मेरे आगे की स्थिति को अनदेखा करता है: विधि और एक अपरिचित चयनकर्ता अपवाद फेंकता है।आगे इंवेक्शन नहीं कहा जा रहा है?
@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.html#//apple_ref/doc/uid/TP40008048-CH105 http://cocoawithlove.com/2008/03/construct-nsinvocation-for-any-message.html
जहां तक मेरा बता सकते हैं, क्रम चाहिए
मेरे परीक्षण कोड इस प्रकार है अग्रेषित कॉल करें: जब मैं [स्पैस वैल्यू] का आह्वान करता हूं तो स्पैर्स क्लास के उदाहरण पर, लेकिन इसे पूरी तरह अनदेखा कर दिया जाता है:
'गैर मान्यता चयनकर्ता उदाहरण 0x4b1c4a0 के लिए भेजा [SparseClass मूल्य]:' गैर मान्यता प्राप्त चयनकर्ता न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से उदाहरण 0x4b1c4a0 के लिए भेजा *** समाप्त एप्लिकेशन- [SparseClass मूल्य]: -:
बहुत बढ़िया! एक जादू की तरह काम किया। – Karl