gpt4 book ai didi

iphone - 在实例变量中保存 block

转载 作者:可可西里 更新时间:2023-11-01 06:19:20 29 4
gpt4 key购买 nike

我们如何声明一个全局(私有(private)实例变量)来接受其中的一个 block 。我们是否需要综合它以及它对内存管理的影响是什么。

我有一个从第三方方法收到的 block ,我想将其保存在实例变量中并在以后使用它。

最佳答案

这是在后台完成一些工作后存储用于完成回调的 block 的(无 ARC)示例:

worker .h:

@interface Worker : NSObject
{
void (^completion)(void);
}
@property(nonatomic,copy) void (^completion)(void);
- (void)workInBackground;
@end

worker .m:

@implementation Worker
@synthesize completion;

- (void)dealloc
{
Block_release(completion);

[super dealloc];
}

- (void)setCompletion:(void (^)(void))block
{
if ( completion != NULL )
Block_release(completion);

completion = Block_copy(block);
}

- (void)workInBackground
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
{
// Do work..

dispatch_async(dispatch_get_main_queue(), completion);
});
}

@end

关于iphone - 在实例变量中保存 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343526/

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