NSInvocation
NSInvocation сообщение Objective C, представленное статичным, т.е. это - действие, превратился в объект. NSInvocation объекты привыкли к сообщениям промежуточной буферизации между объектами и между приложениями, прежде всего NSTimer объекты и распределенная система объектов.
NSInvocation объект содержит все элементы сообщения Objective C: цель, селектор, параметры и возвращаемое значение. Каждый из этих элементов может быть установлен непосредственно, и возвращаемое значение установлено автоматически когда NSInvocation объект диспетчеризируется.
NSInvocation объект может неоднократно диспетчеризироваться различным целям; его параметры могут быть изменены между отгрузкой для переменных результатов; даже его селектор может быть изменен на другого с той же сигнатурой метода (параметр и типы возврата). Эта гибкость делает NSInvocation полезный для повторения сообщений со многими параметрами и изменениями; вместо того, чтобы перепечатывать немного отличающееся выражение для каждого сообщения, Вы изменяете NSInvocation возразите по мере необходимости каждый раз прежде, чем диспетчеризировать его новой цели.
NSInvocation не поддерживает вызовы методов или с переменными числами параметров или с union параметры. Необходимо использовать invocationWithMethodSignature: метод класса создать NSInvocation объекты; Вы не должны создавать эти объекты использование alloc и init.
Этот класс не сохраняет параметры за содержавший вызов по умолчанию. Если те объекты могли бы исчезнуть между временем, Вы создаете свой экземпляр NSInvocation и время, Вы используете его, необходимо явно сохранить объекты сами или вызвать retainArguments метод для имения объекта вызова сохраняет их самого.
Оператор импорта
Не применимый
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвраты
NSInvocationвозразите способный создать сообщения с помощью данной сигнатуры метода.Объявление
Objective C
+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signatureПараметры
signatureОбъект, инкапсулирующий сигнатуру метода.
Обсуждение
Новый объект должен иметь свой селекторный набор с
setSelector:и его набор параметров сsetArgument:atIndex:прежде чем это сможет быть вызвано. Не используйтеalloc/initподход для созданияNSInvocationобъекты.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
-
Селектор получателя, или 0, если это не было установлено.
Объявление
Objective C
@property SEL selectorОператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
-
Цель получателя, или
nilесли получатель не имеет никакой цели.Объявление
Objective C
@property(assign) id targetОбсуждение
Цель является получателем сообщения, отправленного
invoke.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает параметр получателя.
Объявление
Objective C
- (void)setArgument:(void *)bufferatIndex:(NSInteger)indexПараметры
bufferНевведенный буфер, содержащий параметр, который будет присвоен получателю. Посмотрите обсуждение ниже того, чтобы касаться значений аргументов, которые являются объектами.
indexОбсуждение
Этот метод копирует содержание
bufferкак параметр вindex. Число скопированных байтов определяется размером параметра.Когда значение аргумента является объектом, передайте указатель на переменную (или память), с которого должен быть скопирован объект:
NSArray *anArray;[invocation setArgument:&anArray atIndex:3];
Этот метод повышения
NSInvalidArgumentExceptionесли значениеindexбольше, чем фактическое число параметров за селектор.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
– getArgument:atIndex:– numberOfArguments(NSMethodSignature) -
Возвраты косвенно параметр получателя в указанном индексе.
Объявление
Objective C
- (void)getArgument:(void *)bufferatIndex:(NSInteger)indexПараметры
bufferНевведенный буфер для содержания возвращенного параметра. Посмотрите обсуждение ниже того, чтобы касаться значений аргументов, которые являются объектами.
indexЦелое число, указывающее индекс параметра для получения.
Индексы 0 и 1 указывают скрытые параметры
selfи_cmd, соответственно; эти значения могут быть получены непосредственно сtargetиselectorметоды. Используйте индексы 2, и больше для параметров обычно передавал в сообщении.Обсуждение
Этот метод копирует параметр, сохраненный в
indexв хранение, которым указываютbuffer. Размерbufferдолжно быть достаточно большим для размещения значения аргумента.Когда значение аргумента является объектом, передайте указатель на переменную (или память), в который должен быть помещен объект:
NSArray *anArray;[invocation getArgument:&anArray atIndex:3];
Этот метод повышения
NSInvalidArgumentExceptionеслиindexбольше, чем фактическое число параметров за селектор.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
– setArgument:atIndex:– numberOfArguments(NSMethodSignature) -
argumentsRetained argumentsRetainedСвойствоYEStrueесли получатель сохранил свои параметры,NOfalseиначе. (только для чтения)Объявление
Objective C
@property(readonly) BOOL argumentsRetainedОператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Если получатель уже не сделал так, сохраняет цель и все объектные параметры получателя и копирует все свои параметры струны до и блоки.
Объявление
Objective C
- (void)retainArgumentsОбсуждение
Прежде чем этот метод вызывается,
argumentsRetainedвозвратыNOfalse; после, это возвращаетсяYEStrue.Для эффективности, недавно создаваемой
NSInvocationобъекты не сохраняют или копируют свои параметры, и при этом они не сохраняют свои цели, струны до копии, или копируют любые связанные блоки. Необходимо сообщитьNSInvocationобъект сохранить его параметры, если Вы намереваетесь кэшировать его, потому что параметры могут иначе быть выпущены перед вызовом, вызывается.NSTimerобъекты всегда дают своим вызовам команду сохранять их параметры, например, потому что обычно существует задержка, прежде чем будет стрелять таймер.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
-
Устанавливает возвращаемое значение получателя.
Объявление
Objective C
- (void)setReturnValue:(void *)bufferПараметры
bufferНевведенный буфер, содержание которого копируется как возвращаемое значение получателя.
Обсуждение
Когда Вы отправляете, это значение обычно устанавливается
invokeилиinvokeWithTarget:сообщение.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
– getReturnValue:– methodReturnLength(NSMethodSignature)– methodReturnType(NSMethodSignature) -
Получает возвращаемое значение получателя.
Объявление
Objective C
- (void)getReturnValue:(void *)bufferПараметры
bufferНевведенный буфер, в который получатель копирует свое возвращаемое значение. Это должно быть достаточно большим для размещения значения. Посмотрите дискуссию ниже для получения дополнительной информации о
buffer.Обсуждение
Используйте
NSMethodSignatureметодmethodReturnLengthопределить размер, необходимый дляbuffer:NSUInteger length = [[myInvocation methodSignature] methodReturnLength];buffer = (void *)malloc(length);[invocation getReturnValue:buffer];
Когда возвращаемое значение является объектом, передайте указатель на переменную (или память), в который должен быть помещен объект:
id anObject;NSArray *anArray;[invocation1 getReturnValue:&anObject];[invocation2 getReturnValue:&anArray];
Если
NSInvocationобъект никогда не вызывался, результат этого метода не определен.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
См. также
– setReturnValue:– methodReturnType(NSMethodSignature)
-
Отправляет сообщение получателя (с параметрами) к его цели и устанавливает возвращаемое значение.
Объявление
Objective C
- (void)invokeОбсуждение
Необходимо поставить цель получателя, селектор и значения аргументов прежде, чем вызвать этот метод.
Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
-
Ставит цель получателя, отправляет сообщение получателя (с параметрами) к той цели и устанавливает возвращаемое значение.
Объявление
Objective C
- (void)invokeWithTarget:(id)anObjectПараметры
anObjectОбъект установить как цель получателя.
Обсуждение
Необходимо установить селектор получателя и значения аргументов прежде, чем вызвать этот метод.
Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
-
methodSignature methodSignatureСвойствоСигнатура метода получателя. (только для чтения)
Объявление
Objective C
@property(readonly, retain) NSMethodSignature *methodSignatureОператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.0 и позже.
