gpt4 book ai didi

cocoa-touch - 为什么我要使用 NSInitation 而不是 Block?

转载 作者:行者123 更新时间:2023-12-03 16:54:18 24 4
gpt4 key购买 nike

有人可以提供使用 NSInitation 而不仅仅是使用 Block 甚至常规方法调用的具体原因吗?我在网络上找到了 NSInspiration 的描述,但没有说明它在哪里使用至关重要的示例,甚至没有说明它是唯一好的选择。

最佳答案

NSIncations 和 block 都可以用来封装方法调用,以及直到运行时才定义的参数和接收器。在 block 存在之前,NSInitation 是执行此操作的唯一方法。如果这就是您需要做的全部,那么 block 是更好的选择。如今,NSInspiration 的使用相当罕见。

但是,与可以表示任意数量的代码以及捕获的值的 block 不同,NSInitation 始终表示单个方法调用。

这有一些优点:

  1. 与不透明的 block 不同,可以查询 NSInitation 以获取选择器、接收器、参数和调用方法的签名。如果您收到一个 NSInitation 作为方法的参数(与 NSObject 的 -forwardInitation 一样),您可以提取参数并调用不同的方法。

  2. 可以使用 -initWithMethodSignature: 在运行时为任意方法调用构造 NSInitation。例如,如果您想为 Objective-C 实现 eval() 函数,您可以使用 NSInitation 来实际调用这些方法。

关于cocoa-touch - 为什么我要使用 NSInitation 而不是 Block?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com