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 *)
buffer
atIndex:(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 *)
buffer
atIndex:(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
СвойствоYES
true
если получатель сохранил свои параметры,NO
false
иначе. (только для чтения)Объявление
Objective C
@property(readonly) BOOL argumentsRetained
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Если получатель уже не сделал так, сохраняет цель и все объектные параметры получателя и копирует все свои параметры струны до и блоки.
Объявление
Objective C
- (void)retainArguments
Обсуждение
Прежде чем этот метод вызывается,
argumentsRetained
возвратыNO
false
; после, это возвращаетсяYES
true
.Для эффективности, недавно создаваемой
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 и позже.