정확히 어떻게 NSInvocation
작동합니까? 좋은 소개가 있습니까?
특히 다음 코드 ( Mac OS X 용 Cocoa Programming, 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 및 Cocoa 개념을 대략 비슷한 .NET 개념과 연결하려고합니다. 이것은 .NET의 대리자 개념과 비슷하지만 유형이 지정되지 않았습니까?
이것은 책에서 100 % 명확하지 않으므로 간단한 Cocoa / Obj-C 전문가의 보충 자료를 찾고 있습니다. 단순한 (-ish) 예제 아래의 기본 개념을 이해한다는 목표로 다시합니다. 나는 지식을 독립적으로 적용 할 수있는 방법을 찾고 있습니다. 9 장까지는 그렇게하는 데 어려움이 없었습니다. 그러나 지금 ...
미리 감사드립니다!
setArgument:atIndex:
해야하므로 arg 할당이 실제로 읽혀 야[myInvocation setArgument:&myString atIndex:2]
합니다.