Chr*_*ris 69 objective-c callback ios objective-c-blocks
我想写一个类似于这个的方法:
+(void)myMethodWithView:(UIView *)exampleView completion:(void (^)(BOOL finished))completion;
Run Code Online (Sandbox Code Playgroud)
我基本上删除了Apple的一个类方法中的语法UIView:
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
Run Code Online (Sandbox Code Playgroud)
并期望它像这样使用:
[myFoo myMethodWithView:self.view completion:^(BOOL finished){
NSLog(@"call back success");
}];
Run Code Online (Sandbox Code Playgroud)
我的问题是如何实现这一点?如果有人可以向我指出那些非常好的正确文档,并且非常感谢一个非常基本的例子(或者Stack Overflow上的类似答案 - 我找不到一个).我仍然不太了解代表,以确定这是否是正确的方法!
我已经在实现文件中给出了一个粗略的例子,但是由于我无法找到信息,所以猜测是有效的.
+ (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
// do stuff
if (completion) {
// what sort of syntax goes here? If I've constructed this correctly!
}
}
Run Code Online (Sandbox Code Playgroud)
omz*_*omz 84
您可以像常规函数一样调用块:
BOOL finished = ...;
if (completion) {
completion(finished);
}
Run Code Online (Sandbox Code Playgroud)
这意味着使用您的示例实现完整的块函数将如下所示:
+ (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
if (completion) {
completion(finished);
}
}
Run Code Online (Sandbox Code Playgroud)