Wie genau funktioniert das NSInvocation
? Gibt es eine gute Einführung?
Ich habe speziell Probleme zu verstehen, wie der folgende Code (aus Cocoa Programming für Mac OS X, 3. Ausgabe ) funktioniert, kann dann aber auch die Konzepte unabhängig vom Tutorial-Beispiel anwenden. Der Code:
- (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];
}
Ich verstehe, was es versucht zu tun. (Übrigens employees
gehört NSArray
zu einer benutzerdefinierten Person
Klasse.)
Als .NET-Typ versuche ich, unbekannte Obj-C- und Cocoa-Konzepte mit ungefähr analogen .NET-Konzepten zu verknüpfen. Ist dies dem Delegatenkonzept von .NET ähnlich, aber untypisiert?
Dies geht aus dem Buch nicht zu 100% hervor, daher suche ich nach einer Ergänzung von echten Cocoa / Obj-C-Experten, wieder mit dem Ziel, das grundlegende Konzept unter dem einfachen (-ish) Beispiel zu verstehen. Ich bin wirklich bestrebt, das Wissen unabhängig anwenden zu können - bis Kapitel 9 hatte ich keine Schwierigkeiten damit. Aber jetzt ...
Danke im Voraus!
setArgument:atIndex:
, damit die Argumentzuweisung tatsächlich gelesen werden sollte[myInvocation setArgument:&myString atIndex:2]
.