我将在序言中提出这个问题,指出我要问的只是教育和可能的调试目的。如何创建NSBlock对象?
如何在Objective C运行时内部创建块对象?
我看到所有表示各种块类型的类的层次结构,并且层次结构中最低的超类,NSObject
,是NSBlock
。对班级数据的转储显示它实施了+ alloc
,+ allocWithZone:
,+ copy
和+ copyWithZone:
方法。其他块子类都没有实现这些类方法,这导致我相信,可能错误地认为NSBlock
负责块处理。
但是这些方法似乎在块的使用期限内的任何时候都不会被调用。我用自己的方式交换了实现,并在每个实现中都放置了一个断点,但他们从来没有被调用。使用NSObject
的实现方式进行类似的练习使我确切地知道我想要什么。
所以我假设块以不同的方式实现?任何人都可以阐明这个实现是如何工作的?即使我不能挂钩块的分配和复制,我想了解内部实现。
我不认为这是可能使用'[ NSBlock alloc]'创建一个块,这就是为什么他们不被调用。 –