正確にはどのように機能しNSInvocation
ますか?良い紹介はありますか?
以下のコード(Cocoaプログラミングfor 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];
}
私はそれが何をしようとしているのかを理解しています。(ところで、employees
あるNSArray
カスタムのPerson
クラスです。)
私は.NETの男なので、おなじみのないObj-CおよびCocoaの概念を、ほぼ類似した.NETの概念に関連付けようとします。これは.NETのデリゲートコンセプトに似ていますが、型付けされていませんか?
これは本から100%明確ではないので、本当のCocoa / Obj-Cエキスパートから補足的なものを探しています。ここでも、シンプルな(-ish)例の下の基本的な概念を理解することを目標としています。私は実際に独立して知識を適用できるようになりたいと思っています-9章までは、それを行うのに問題はありませんでした。でも今 ...
前もって感謝します!
setArgument:atIndex:
ため、引数の割り当ては実際に読み取る必要があります[myInvocation setArgument:&myString atIndex:2]
。