2010-10-27 5 views
0

Сравнить ...Почему prepareWithInvocationTarget: конкретный для NSUndoManager?

NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:[performer methodSignatureForSelector:@selector(playFile:)]]; 
[invocation setSelector:@selector(playFile:)]; 
[invocation setTarget:performer]; 
NSString* string = [NSString stringWithString:@"reverse.wav"]; 
[invocation setArgument:&string atIndex:2]; 

... с ...

NSInvocation* invocation = [[NSInvocation prepareWithTarget:performer] playFile:@"reverse.wav"]; 

. Почему такой метод не реализован?

+1

Вы можете сделать свой код более чистым, используя переменную для селектора 'SEL sel = @selector (playFile:)', которая также позволяет избежать замалчивания длинных имен селекторов и просто установить 'NSString * string = @" reverse.wav «' - вызов '-stringWithString:' не нужен. –

ответ

2

Это не так, но нет недостатка в сторонних реализациях той же функциональности, как, например, написанная и созданная для Cocoa with Love.

+0

Так странно, что его нет; Я думал, что будет причина. Отличная ссылка! – andyvn22

+0

@ andyvn22: Люди просто не создают NSInvocations так много, поэтому более удобный способ сделать это, вероятно, не очень высок в списке дел Apple. – Chuck

+0

Кроме того, теперь у нас есть блоки. В заключение :) –

 Смежные вопросы

  • Нет связанных вопросов^_^