कैसे NSInvocation
काम करता है ? क्या कोई अच्छा परिचय है?
मुझे विशेष रूप से यह समझने में समस्याएँ हो रही हैं कि निम्न कोड ( मैक ओएस एक्स, 3 डी संस्करण के लिए कोको प्रोग्रामिंग से ) कैसे काम करता है, लेकिन फिर भी ट्यूटोरियल नमूने के स्वतंत्र रूप से अवधारणाओं को लागू करने में सक्षम हो। कोड:
- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index
{
NSLog(@"adding %@ to %@", p, employees);
// Add inverse of this operation to undo stack
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
if (![undo isUndoing])
[undo setActionName:@"Insert Person"];
// Finally, add person to the array
[employees insertObject:p atIndex:index];
}
- (void)removeObjectFromEmployeesAtIndex:(int)index
{
Person *p = [employees objectAtIndex:index];
NSLog(@"removing %@ from %@", p, employees);
// Add inverse of this operation to undo stack
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] insertObject:p
inEmployeesAtIndex:index];
if (![undo isUndoing])
[undo setActionName:@"Delete Person"];
// Finally, remove person from array
[employees removeObjectAtIndex:index];
}
मुझे वह मिलता है जो मैं करने की कोशिश कर रहा हूं। (Btw, employees
एक है NSArray
एक कस्टम के Person
वर्ग।)
एक .NET पुरुष होने के नाते, मैं अपरिचित Obj-C और कोको अवधारणाओं को मोटे तौर पर अनुरूप .NET अवधारणाओं से संबद्ध करने का प्रयास करता हूं। क्या यह .NET की डेलिगेट अवधारणा के समान है, लेकिन अनकैप्ड है?
यह पुस्तक से 100% स्पष्ट नहीं है, इसलिए मैं असली कोको / ओबज-सी विशेषज्ञों से कुछ पूरक की तलाश में हूं, फिर से इस लक्ष्य के साथ कि मैं सरल (-इश) उदाहरण के नीचे मूल अवधारणा को समझता हूं। मैं वास्तव में स्वतंत्र रूप से ज्ञान को लागू करने में सक्षम होना चाहता हूं - अध्याय 9 तक, मुझे ऐसा करने में कोई कठिनाई नहीं हो रही थी। पर अब ...
अग्रिम में धन्यवाद!
setArgument:atIndex:
, इसलिए आर्ग असाइनमेंट को वास्तव में पढ़ना चाहिए[myInvocation setArgument:&myString atIndex:2]
।