Як саме NSInvocation
працює? Чи є хороший вступ?
У мене конкретно виникають проблеми з розумінням того, як працює наступний код (з програмування какао для Mac OS X, 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% зрозуміло з книги, тому я шукаю щось додаткове від справжніх фахівців з какао / Obj-C, знову ж таки з метою зрозуміти основоположну концепцію під простим прикладом. Мені дуже хочеться самостійно застосувати знання - до 9-го розділу, мені це не склалося труднощів. Але зараз ...
Спасибі заздалегідь!
setArgument:atIndex:
, щоб призначення аргументу повинне було насправді читати[myInvocation setArgument:&myString atIndex:2]
.