NSInvocation 理解

说明

类说明

作为一个呈现Objective-C消息的对象。

类申明

@interface NSInvocation : NSObject

简介

NSInvocation对象用于在对象之间和应用程序之间存储和转发消息,主要是通过NSTimer对象和分布式对象系统。一个NSInvocation对象调用对象包含Objtovi-C消息的所有元素:目标、selector、参数和返回值。这些元素都可以直接设置,返回值在NSInvocation对象被调度。

NSInvocation对象可以被多次分派到不同的目标;它的参数可以在不同结果的调度之间进行修改;甚至它的选择器也可以用相同的方法签名(参数和返回类型)更改为另一个。这种灵活性使NSInvocation调用用于重复具有许多参数和变量的消息;而不是为每个消息重新键入稍微不同的表达式,而是修改NSInvocation在需要将对象调度到新目标之前,每次都需要它。

NSInvocation不支持具有可变数量的参数的方法调用。联盟论据。你应该使用invocationWithMethodSignature:创建类方法NS调用对象;不应使用这些对象创建alloc和init .

默认情况下,此类不保留包含调用的参数。如果这些对象在创建实例的时间之间可能消失NSInvocation当您使用它时,您应该自己显式地保留这些对象,或者调用保持论据方法使调用对象自己保留调用对象。

NSInvocation符合NSCoding协议,但仅支持由NSPortCoder .NS调用不支持归档。

使用

调用与方法签名

返回一个NSInvocation对象,该对象能够使用给定的方法签名构造消息。

+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)sig;

参数

  • signature 封装方法签名的对象

配置调用对象

selector
@property SEL selector;

接收器的选择器,如果尚未设置,则为0。

target
@property (nullable, assign) id target;

接收器的目标,如果接收器没有目标,则为零。

setArgument:atIndex:
- (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx;

设置接收器的参数。

getArgument:atIndex:
- (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx;

通过间接方式返回指定索引处接收器的参数

argumentsRetained
@property (readonly) BOOL argumentsRetained;

如果接收者保留了自己的论点,则为“是”,否则为“否”。

retainArguments
- (void)retainArguments;

如果接收器尚未这样做,则保留接收器的目标参数和所有对象参数,并复制其所有C字符串参数和块。如果设置了returnvalue,则也会保留或复制它。

setReturnValue:
- (void)setReturnValue:(void *)retLoc;
getReturnValue:
- (void)getReturnValue:(void *)retLoc;

获取接收器的返回值。

优势

在iOS 中可以直接调用某个对象的消息的方法有两种

  • performSelector:这种类型的方法最多只能有两个参数
  • NSInvocation:它可以设置多个参数

使用

参考《NSInvocation使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值