“自动释放但没有池”是什么意思?

2024-01-06

我的应用程序结构如下, 核心部分是用 C++ 编写的,并大量使用线程,我正在其上用 Objective C 开发 UI, 如果我不执行线程,它工作正常,但我无法禁用、停止线程,UI 在日志中随机崩溃,我可以看到以下消息

__NSAutoreleaseNoPool(): Object 0x350270 of class NSCFString autoreleased with no pool in place - just leaking

类似的消息不止一次出现, 通过谷歌搜索知道,我需要设置 NSAutoReleasePool 来摆脱它,但是如何将其与 C++ 代码集成。

Edit:核心库将从 UI 激活,因此我想,可以肯定地说 UI 正在主线程中运行,Lib 正在创建/终止线程而不通知 UI, 在这种情况下,我可以在 UI 中调用 AutoReleasePool

有人可以指导我吗?


请参阅这些文档,了解有关 Cocoa 多线程的知识:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html

像您一样设计您的应用程序是可以的,但应记住两件事:

  1. 当在主线程上操作视图(AppKit 或 UIKit)等 UI 控件时,生活是最简单的(有时也是必要的)。您可以在后台线程上使用 Foundation 对象和一些 AppKit/UIKit 对象,并且一些 Foundation 对象可以在多个线程中使用。
  2. 如果您在后台线程中使用任何 Cocoa 对象,则需要在这些线程上设置自动释放池。

Like so:

- (void)backgroundThreadStart 
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // do stuff

    [pool release];
}

这将修复您的控制台错误,但您可能会遇到其他导致您看到的实际崩溃的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“自动释放但没有池”是什么意思? 的相关文章

  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 在调试模式下运行 NPX 命令

    我有一些npx create react app命令卡住了 终端上没有显示任何错误 所以 我需要运行npx in 调试模式 有没有办法获得debug登录npx命令来识别问题 edit 我运行的命令 npx create react app
  • 从 NSError 返回 NSString

    我正在使用NSURLRequest我的 iPhone 应用程序中的类 调用它的方法返回一个NSString这对于连接正常时非常有用 但问题是我需要将 NSError 转换为 NSString 以便我可以将其返回或运行一些if 对此的声明 有
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • “benaphores”值得在现代操作系统上实施吗?

    当我还是一名 BeOS 程序员时 我读过本文 http www haiku os org legacy docs benewsletter Issue1 26 html Engineering1 26作者 Benoit Schillings
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • Xamarin:“框架不在模块中”- VS 2013&2015

    我对 XAMARIN 支持感到非常失望 那么 我将从头开始 过去几个月一切都很好 直到我更新了 xamarin 的最新版本 4 0 3 214 结果是我现在无法调试 我收到以下消息 框架不在模块中 我向 Xamarin 支持发送了一封电子邮
  • 内存转储格式类似于 gdb 中的 xxd

    我正在尝试检查一个缓冲区 其中包含二进制格式的消息 但也包含字符串数据 作为示例 我正在使用以下 C 代码 int main void char buf 100 x01 x02 x03 x04String Data xAA xBB xCC
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • 如何调试apache虚拟主机配置?

    我的 apache 虚拟主机配置再次出现问题 使用默认配置而不是我的特定配置 问题不在于配置错误 而在于如何解决它 有人有好的建议可以快速解决此类问题吗 更多信息 默认的conf文件是这样的 NameVirtualHost
  • CocoaPods 生成无效的项目文件(未找到标头)

    我有一个带有 Podfile 的项目文件 如下所示 platform ios 7 0 def import pods pod Specta 0 1 8 pod Expecta 0 2 1 pod RestKit 0 20 3 pod Mag
  • C++ 中的多个异步调用

    我想多次调用异步方法 一个简化的示例如下所示 size t counter std string s return s size void stringCountAccumulator std vector
  • 无需停止程序即可输入

    我正在尝试制作一个倒计时器来打印剩余时间 当您输入某些内容时 它会打印您输入的内容 我的问题是我不想等待输入 只是继续运行计时器 我的错误代码 timer 100 while True print timer timer 1 if inpu
  • 如何在可可中使用核心动画对 png 序列进行动画处理(非触摸)

    我想在 NSImageView 中对 png 序列进行动画处理 但我无法使其工作 它只是不想显示任何动画 有什么建议吗 这是我的代码 void imageAnimation NSMutableArray iconImages NSMutab
  • Android SQLite 从代码中转储数据库以进行错误报告

    我正在为我的一个 Android 程序开发一种诊断工具 本质上 如果用户遇到问题 我想做一些类似 SQLite 的事情dump 参考 http www sqlite org sqlite html http www sqlite org s
  • 如何使用固定数量的工作线程实现简单线程

    我正在寻找最简单 最直接的方法来实现以下内容 主程序实例化worker 执行任务的线程 Only n任务可以同时运行 When n已达到 不再有工人 开始直到计数 正在运行的线程回落到下方n 我觉得Executors newFixedThr
  • 如何将变量的全部内容发送/导出到文本文件/xml 文件/剪贴板?

    我想将实例的内容 最好以树形形式 发送给某人 打印屏幕是不行的 因为类太复杂了 您需要将输出转回实例吗 在这种情况下 其他答案都是正确的 如果您只想手动检查实例的内容 理想情况下您的类都将实现toString 你可以将其重定向到一个文件 如
  • 监控剪贴板活动可可?

    是否可以在可可中 观看 用户剪贴板 例如 如果我的应用程序是系统托盘样式应用程序 例如 dropbox 客户端 我可以订阅用户在另一个应用程序中点击复制 粘贴时引发的事件吗 你可以随时查看Apple的示例代码 剪贴板查看器 http dev
  • 有没有办法防止 Visual Studio 因特定方法中的异常而中断?

    我知道我可以根据异常的类型以及最终使用 异常 对话框捕获异常的事实来控制 Visual Studio 处理异常的方式 但是 我有一个在内部抛出 并捕获 一个库ArgumentOutOfRange当我调用特定方法时出现异常 抛出异常 并被库捕
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt

随机推荐

  • 退格键在 Eclipse Mars 中恢复

    我在 Eclipse Mars 4 5 0 中的退格键的作用类似于删除键 它删除右侧字符而不是左侧字符 这真的很令人困惑 也许我不小心使用了快捷键 我尝试重新启动 Eclipse 但没有成功 我还尝试将键绑定首选项切换为 Emacs 方案
  • 检查页面是父页面还是子页面?

    是否可以检查页面是父页面还是子页面 我的页面设置如下 家长 子页1 子页2 etc 如果它是父页面 我想显示某个菜单 如果它在子页面上 我想显示不同的菜单 我知道我可以做类似下面的事情 但我想让它更加动态 而不包含特定的页面 ID 您可以测
  • “kotlin-noarg”插件在 Realm 中不起作用

    kotlin allopen 插件可以工作 但 kotlin noarg 插件不起作用 我能怎么做 下面是代码 构建 gradle buildscript ext kotlin version 1 1 3 2 repositories go
  • cin 首次使用函数后不允许输入

    对于 C 或任何类型的编程来说都是全新的 我正在尝试进行简单的输入 输出 但是在回答第一个问题后 我没有机会输入第二个输入 我尝试过在网上查找内容 但考虑到这是一个非常简单的代码 据说哈哈 没有人遇到过同样的问题 这让我来到这里 inclu
  • 生产中的高超音速休眠?

    开发商高超音速 http hsqldb org 承诺提高绩效 但我担心使用 hsqlDB 的管理和其他方面会出现问题 有人在生产中使用这个吗 这是个好主意吗 许多公司 http hsqldb org web hsqlUsing html在生
  • 如何评估 WHERE 子句中的输入

    我正在我的一个变量中输入一个输入 基本上我想做一些类似的事情 SELECT FROM PEOPLE WHERE IF INPUT 1 ITEMID 16 OR ITEMID 13 ELSE IF INPUT 2 ITEMID 11 OR I
  • Java SFTP (apache vfs2) - 密码带有@

    我正在尝试使用 org apache commons vfs2 通过 SFTP 下载文件 问题是 密码包含 字符 因此这会导致 URI 被错误解析 org apache commons vfs2 FileSystemException Ex
  • 有没有办法只限制mysql中的较低范围?

    我想获取查询中除第一行之外的所有行 我怎样才能做到这一点 您可以使用大量行 偏移量为1 LIMIT 1 18446744073709551615
  • 为什么 JSON 列不能是唯一键?

    我有一个表 里面有一个名为ColumnName该列的数据类型是JSON 我正在努力让它成为unique key 但这是不可能的 我收到了这条消息 3152 JSON 列 columnName 不能在键规范中使用 我想了解为什么我不能将该列设
  • 在 SQL Server 中从 base64 字符串转换为 varbinary(max)

    我的表中以二进制形式存储了 PDF 文档 存储 PDF 字节的列是 typevarbinary max 我想要updateSQL Studio 中包含更新文档的一条记录 我尝试完成此操作的方式如下所示 UPDATE table SET fi
  • Azure 搜索是否支持拼写错误和同义词?

    我见过讨论这两个主题的线程 Azure 搜索是否处理同义词 https stackoverflow com questions 31180405 does azure search handle synonyms 搜索 API 中的模糊搜索
  • 没有简单组件的提供者

    直到 5 分钟前它才工作 这毫无意义 这是组件 import Component OnInit from angular core import Osobaa from osobaa import Osoba from osoba impo
  • RUBYLIB 环境路径

    所以目前我已将以下内容包含在我的 bashrc 文件中 export RUBYLIB home git project app helpers 我正在尝试使用具有以下规范的规范来运行 rspec require output helper
  • 在Python中读取csv文件时列出索引超出范围错误

    我有这段代码 我正在读取 csv 文件 使用NamedTemporaryFile更改 csv 文件的内容 def update localcsv ping Yes No filename file1 csv tempfile NamedTe
  • 发布 TypeScript 包时如何处理可选的对等依赖项?

    将 TypeScript 包发布到 npm 并提供接受来自一个对等依赖项或另一个对等依赖项的输入的函数时 如何定义可选的对等依赖项 import ExternalFoo from foo import ExternalBar from ba
  • 如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表“crawlLog”进行更新?

    我正在尝试从公司表中获取 id 但该 id 尚未出现在crawlLog 表中 然后我需要将该companyId 插入crawlLog 表中 我需要在一次调用中执行此操作 以便并行爬网程序在其他爬网程序选择了某个 url 但尚未将其插入爬网日
  • 如何在小窗口中打开“zxing条码”扫描屏?

    zxing Barcode 扫描仪在我的应用程序中成功运行 https github com journeyapps zxing android embedded https github com journeyapps zxing and
  • 如何优化elasticsearch percolator索引内存性能

    使用elasticsearch percolator索引时有没有办法提高内存性能 我为我的渗滤器创建了一个单独的索引 我有大约 1 000 000 个用户创建的已保存搜索 用于电子邮件警报 创建此渗透器索引后 我的堆使用率飙升至 100 并
  • 重新打开 gem 提供的 ActiveRecord 模型

    我正在尝试扩展 ActiveRecord 模型 Vote 那是一颗宝石 https github com peteonrails vote fu https github com peteonrails vote fu 提供给我的应用程序
  • “自动释放但没有池”是什么意思?

    我的应用程序结构如下 核心部分是用 C 编写的 并大量使用线程 我正在其上用 Objective C 开发 UI 如果我不执行线程 它工作正常 但我无法禁用 停止线程 UI 在日志中随机崩溃 我可以看到以下消息 NSAutoreleaseN