在我期望支持块的所有事情中,奇怪的是,NSUndoManager 似乎并没有这样做。这是否有一些内在的原因,或者 Apple 根本没有着手对这部分 API 进行现代化改造?
特别是我想在 NSObject 上定义一个方法,
- (void)performBlock {
void (^block)(void) = (id)self;
block();
}
为了能够打电话,
[[undoManager prepareWithInvocationTarget:^{
NSLog( @"hello world" );
}] performBlock];
我错过了什么吗?这有什么问题吗?
(受 2009 年 Mike Ash 的一篇文章启发,该文章建议不要在块上定义方法。我也在那里发表了评论。)