【发布时间】:2011-09-06 12:52:01
【问题描述】:
这是此问题的扩展: Is it possible to create a category of the "Block" object in Objective-C.
基本上,虽然似乎可以通过 NSObject 或 NSBlock 在块上创建类别,但我无法理解块如何评估自身。最后一个问题的答案中给出的例子:
- (void) doFoo {
//do something awesome with self, a block
//however, you can't do "self()".
//You'll have to cast it to a block-type variable and use that
}
暗示可以以某种方式将 self 转换为块变量,但是如何执行块本身呢?例如,假设我在 NSBlock 上做了一个类别,而在一个方法中做了:
NSBlock* selfAsBlock = (NSBlock*)self;
我可以向 selfAsBlock 发送任何消息以评估该块吗?
【问题讨论】:
-
是的,你可以。您可以在此找到更多信息(已经在 SO)stackoverflow.com/questions/4824613/…
-
我不明白这是如何解决这个问题的。该答案似乎集中在如何从其自己的块定义中调用块。我说的是从块对象本身评估块。更具体地说,我希望通过此实现的是能够向块(在 NSObject 或 NSBlock 上)添加方法以执行基于块的控制流(即 [block whileTrueDo: block])。为此,我需要该块在方法中重新评估自身。
标签: objective-c objective-c-blocks objective-c-category