gpt4 book ai didi

objective-c - 实现一个将 block 用作回调的方法

转载 作者:IT老高 更新时间:2023-10-28 11:26:01 24 4
gpt4 key购买 nike

我想写一个类似这样的方法:

+(void)myMethodWithView:(UIView *)exampleView completion:(void (^)(BOOL finished))completion;

我基本上已经剥离了从 Apple 的 UIView 类方法之一中获取的语法:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;

并且希望它像这样使用:

[myFoo myMethodWithView:self.view completion:^(BOOL finished){
NSLog(@"call back success");
}];

我的问题是如何实现这一点?如果有人可以向我指出正确的文档,那就太好了,并且非常感谢一个非常基本的示例(或 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!
}

}

最佳答案

您可以像普通函数一样调用 block :

BOOL finished = ...;
if (completion) {
completion(finished);
}

这意味着使用您的示例实现一个完整的 block 函数如下所示:

+ (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
if (completion) {
completion(finished);
}
}

关于objective-c - 实现一个将 block 用作回调的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com