วิธีการว่าจะNSInvocation
ทำงานหรือไม่ มีการแนะนำที่ดีหรือไม่?
ฉันมีปัญหาในการทำความเข้าใจว่าโค้ดต่อไปนี้ (จากCocoa Programming สำหรับ 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 และ Cocoa ที่ไม่คุ้นเคยกับแนวคิด. สิ่งนี้คล้ายกับแนวคิดตัวแทนของ. NET แต่ไม่มีการพิมพ์หรือไม่
นี่ไม่ใช่หนังสือที่ชัดเจน 100% ดังนั้นฉันจึงมองหาบางสิ่งเพิ่มเติมจากผู้เชี่ยวชาญของ Cocoa / Obj-C จริงอีกครั้งโดยมีเป้าหมายที่ฉันเข้าใจแนวคิดพื้นฐานภายใต้ตัวอย่างง่าย ๆ (-ish) ฉันกำลังมองหาที่จะใช้ความรู้อย่างอิสระจนถึงบทที่ 9 ฉันไม่มีปัญหาในการทำเช่นนั้น แต่ตอนนี้ ...
ขอบคุณล่วงหน้า!
setArgument:atIndex:
ดังนั้นการมอบหมายหาเรื่องควรอ่านจริง[myInvocation setArgument:&myString atIndex:2]
ๆ