Comment exactement NSInvocation
travail ? Y a-t-il une bonne introduction ?
J'ai notamment du mal à comprendre comment le code suivant (tiré de Programmation Cocoa pour Mac OS X, 3ème édition ) fonctionne, mais aussi être capable d'appliquer les concepts indépendamment de l'échantillon du tutoriel. 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 un NSArray
d'une coutume Person
classe.)
Étant un spécialiste de .NET, j'essaie d'associer les concepts Obj-C et Cocoa peu familiers à 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 cherche quelque chose de complémentaire de la part de vrais experts en Cocoa/Obj-C, toujours dans le but de comprendre le concept fondamental derrière l'exemple simple (ou presque). Je cherche vraiment à être capable d'appliquer les connaissances de manière indépendante. Jusqu'au chapitre 9, je n'avais aucune difficulté à le faire. Mais maintenant...
Merci d'avance !