Comment ça NSInvocation
marche exactement ? Y a-t-il une bonne introduction?
J'ai spécifiquement des problèmes pour comprendre le fonctionnement du code suivant (de Cocoa Programming pour Mac OS X, 3e édition ), mais je peux également appliquer les concepts indépendamment de l'exemple du didacticiel. Le 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];
}
Je comprends ce qu'il essaie de faire. (BTW, employees
est une classe NSArray
personnalisée Person
.)
Étant un gars .NET, j'essaie d'associer des concepts Obj-C et Cocoa inconnus à des concepts .NET à peu près analogues. Est-ce similaire au concept de délégué de .NET, mais non typé?
Ce n'est pas clair à 100% dans le livre, donc je recherche quelque chose de supplémentaire de la part de vrais experts Cocoa / Obj-C, toujours dans le but de comprendre le concept fondamental sous l'exemple simple (-ish). Je cherche vraiment à pouvoir appliquer les connaissances de manière indépendante - jusqu'au chapitre 9, je n'avais aucune difficulté à le faire. Mais maintenant ...
Merci d'avance!
setArgument:atIndex:
, donc l'affectation arg devrait réellement lire[myInvocation setArgument:&myString atIndex:2]
.