objective-c - dispatchBlock 和手动捕获的资源
问题描述
我有一个调度块,可能需要释放而不是执行。由于我的调度块捕获了手动保留的资源,这会泄漏,对吗?
CFRetain(buffer);
dispatch_block_t dispatchBlock = dispatch_block_create(0, ^{
//...
CFRelease(buffer);
});
Block_release(dispatchBlock);
我的项目严重依赖于捕获资源的调度块,我现在有一个案例,我可能需要释放一个块而不是执行它,所以我想这样做是为了防止泄漏。我真的不想重写所有内容!
CFRetain(buffer);
dispatch_block_t dispatchBlock = dispatch_block_create(0, ^{
//...
CFRelease(buffer), buffer = NULL;
});
Block_release(dispatchBlock);
if (buffer)
CFRelease(buffer), buffer = NULL;
防止泄漏的更好解决方案将不胜感激!
解决方案
推荐阅读
- angular - 未捕获的 ReferenceError:sample_data 未在 Angular 7 中定义
- http - 在 IONIC 3 http.post 请求之间保留会话状态
- python - 如何从 Anaconda 环境(Python 3.7)构建 .exe 程序
- r - 提取R中第2个句点和第3个句点之间的字母
- docker - docker 18.09 版本支持哪个 kubernetes 版本
- c# - 从 XML 文档中将 XML 作为字符串读取
- react-native - 为什么反应原生深度链接到 FB 会打开我的主页而不是我通过的页面
- c - fwrite 目标文件为空后 c 语言
- spring - 使用带有文件的 @PropertySource 注释的 Spring Boot 外部配置
- php - Laravel 5.7 进行身份验证