【发布时间】:2013-11-22 00:19:11
【问题描述】:
我将在这个问题的开头说明我将要问的内容仅用于教育目的,也可能仅用于调试目的。
如何在 Objective C 运行时内部创建块对象?
我看到了代表各种块类型的类的层次结构,层次结构中最高的超类,在NSObject 之下,是NSBlock。类数据转储显示它实现了+ alloc、+ allocWithZone:、+ copy 和+ copyWithZone: 方法。其他块子类都没有实现这些类方法,这让我相信,也许是错误的,NSBlock 负责块处理。
但这些方法似乎不会在块的生命周期内的任何时候被调用。我用自己的实现交换了实现,并在每个实现中放置了一个断点,但它们从未被调用。用NSObject 的实现做类似的练习给了我我想要的。
所以我假设块以不同的方式实现?任何人都可以阐明这个实现是如何工作的?即使我无法挂钩块的分配和复制,我也想了解内部实现。
【问题讨论】:
-
我不认为可以使用
[NSBlock alloc]来创建块,这就是为什么不调用它们的原因。
标签: objective-c objective-c-blocks objective-c-runtime