我喜欢使用animateWithDuration:options:completion
。我遇到过一些情况,我可以在没有动画的情况下将它用于我自己的场景,但是我在编写方法体时遇到了困难。显然,我不能只查看UIView
的代码,只能看它的签名。
这是我的尝试(我的方法签名也可能都搞砸了):
.h
+(void)performGenericBlock:(void(^)(BOOL))code actionWhenDone:(void(^)(void))action;
.m
+(void)performGenericBlock:(void(^)(BOOL))code actionWhenDone:(void(^)(void))action
{
//Kind of lost here - here is psuedocode
[do stuff:^(BOOL done){action}];
}
基本上我想完成:
执行第一个代码块,完成后,执行第二个代码块。
答案 0 :(得分:0)
不确定为什么需要两个参数,你应该能够在原始块中编写代码。
在以下示例中,假设我们首先要调用[self.test foo1]然后调用[self.test foo2]。
最简单的解决方案是根本不创建新方法。只需致电您的代码:
[self.test foo1];
[self.test foo2];
foo2将在foo1之后执行。
第二个最简单的解决方案是只用一个参数创建函数:
[ViewController performGenericBlock:^{
[self.test foo1];
[self.test foo2];
}];
如果您确实需要2个参数,则可以执行以下操作:
[ViewController performGenericBlock:^{
[self.test foo1];
} actionWhenDone:^{
[self.test foo2];
}];
...并定义方法如下:
+ (void)performGenericBlock:(void(^)(void))code actionWhenDone:(void(^)(void))action {
code();
action();
}