NSNumber >= 13 不会保留。其他一切都会

2023-12-07

我当前正在处理的代码需要将 NSNumber 对象添加到数组中。所有值为 0-12 的 NSNumber 都可以正常添加,但 13 以后会导致 EXC_BAD_ACCESS。我打开 NSZombieEnabled 现在得到*** -[CFNumber retain]: message sent to deallocated instance 0x3c78420.

这是调用堆栈:
#0 0x01eac3a7 in ___forwarding___
#1 0x01e886c2 in __forwarding_prep_0___
#2 0x01e3f988 in CFRetain
#3 0x01e4b586 in _CFArrayReplaceValues
#4 0x0002a2f9 in -[NSCFArray insertObject:atIndex:]
#5 0x0002a274 in -[NSCFArray addObject:]
#6 0x00010a3b in -[Faves addObject:] at Faves.m:24
#7 0x000062ff in -[ShowController processFave] at ShowController.m:458
#8 0x002af405 in -[UIApplication sendAction:to:from:forEvent:]
#9 0x00312b4e in -[UIControl sendAction:to:forEvent:]
#10 0x00314d6f in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
#11 0x00313abb in -[UIControl touchesEnded:withEvent:]
#12 0x002c8ddf in -[UIWindow _sendTouchesForEvent:]
#13 0x002b27c8 in -[UIApplication sendEvent:]
#14 0x002b9061 in _UIApplicationHandleEvent
#15 0x02566d59 in PurpleEventCallback
#16 0x01e83b80 in CFRunLoopRunSpecific
#17 0x01e82c48 in CFRunLoopRunInMode
#18 0x02565615 in GSEventRunModal
#19 0x025656da in GSEventRun
#20 0x002b9faf in UIApplicationMain
#21 0x00002498 in main at main.m:14

如果它没有隔离到一定范围的 NSNumbers,我会认为我的内存管理搞砸了,但我就是不知道。

有任何想法吗?

Thanks,
Josh


我在回答另一个问题时发现数字 0 到 12 很特殊here。请记住,这是一个实现细节,not语言规范的东西。

基本上,最大(包括)12 的数字为您提供对已经存在的 NSNumber 的引用,由于它们是不可变的,因此这是可能的。调查显示,13 或更大的数字给出了一个单独的实例。

所以你可能have毕竟搞砸了你的内存管理:-) 事实上,小于 13 的数字很可能引用了已经存在的数字,在这种情况下,这可以节省你的培根。我建议您发布更多代码,以便我们可以找到该特定问题。


根据您对此处另一个答案的评论:

我在代码中添加了一条保留行,现在一切正常。不知道为什么。我就顺其自然吧。谢谢!

我认为您会发现,在您获得自己的保留计数之前,小于 13 的 NSNumbers 的保留计数已经为 1(将计数增加到 2),这就是它们不会导致 EXC_BAD_ACCESS 的原因。显然你的代码正在丢失all您分配的号码,但系统不会释放 13 岁以下的号码,因为它们仍在使用中(保留 1 或更多的计数)。

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

NSNumber >= 13 不会保留。其他一切都会 的相关文章

  • iPhone模拟器的屏幕截图应用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道有没有什么好的推荐iPhone模拟器截图的应用程序 我尝试过 iPhone 屏幕截图裁剪器等应
  • 一个 UITableView 中的两种不同的单元格类型

    大家好 我对如何在一个具有两个部分的 UITableView 中使用两种不同的单元格类型感到非常困惑 第一部分应返回一个大单元格 其中包含大量文本 另一部分应返回三个单元格 以导航到其他视图 我尝试过这样的 UITableViewCell
  • PHPstorm - 无法在blade.php 文件中设置断点

    我正在开发 Laravel 应用程序 可以很好地调试我的控制器 php 文件 但我还想调试blade php 文件 在我当前的设置中 我遵循了所有 jetbrains 为 Laravel 推荐的设置 https confluence jet
  • ios7 绘图时出现延迟

    我有一个应用程序 在其中我正在视图上绘制一些草图 到目前为止 在我安装之前它运行良好ios7 我的应用程序使用触摸移动方法来识别运动的变化 但是当我画一条线时 触摸方法被调用 但线不会更新 直到我触摸结束ios7 所以画起来有一点点滞后 它
  • iPhone - cancelPerformSelectorWithTarget 不起作用

    如果我在 UIView 的子类中执行此操作 self performSelector selector doSomething withObject nil afterDelay 5 然后像这样取消它 我已经尝试了两个版本 NSRunLoo
  • Coredata错误setObjectForKey:对象不能为nil

    我正在尝试检查我的核心数据存储中是否有任何数据作为我的应用程序的恢复类型 基本上 如果用户处于最终视图 则 coredata 中会有一些数据不断更新 因此 他们处于最终视图中 然后应用程序崩溃 或者他们将其置于睡眠状态 然后应用程序从内存中
  • Flash 未在调试播放器中显示错误/堆栈跟踪(firefox/chrome/whatnot)

    我正在尝试调试在线默默地失败的应用程序 我 100 确定我正在运行 Flash 调试播放器 为了确保我不会丢失它 我故意抛出一个错误 但 Flash 在浏览器中没有显示任何 stracktrace 我快要失去它了 有什么线索吗 我正在 ch
  • 如何检查 uiviewcontroller 是否存在于 uinavigationcontroller 堆栈中

    我有一个UINavigationController 我必须从 a 中弹出一个视图UINavigationController并将其替换为另一个视图 我们如何才能搜索到一个UIViewController对象并将其替换为另一个 当我打印时
  • 如何在iOS应用程序中实现互斥锁[重复]

    这个问题在这里已经有答案了 可能的重复 GCD 如何从两个线程写入和读取变量 https stackoverflow com questions 11070947 gcd how to write and read to variable
  • 在 Objective-C iPad 开发中发布

    我正在尝试发出 POST 请求 但我似乎无法弄清楚出了什么问题 我从服务器收到响应 但我的电子邮件 密码对似乎没有正确发送 读取 由服务器 它告诉我不存在这样的帐户 这是我的代码 它包含在一个函数中 当用户按下我创建的 登录 按钮时调用该函
  • Iphone 上的 Javascript 日期解析

    我正在开发一个针对移动设备的离线 Javascript 网站 iPhone 就是这样的一种移动设备 我正在尝试从 REST API JSON 对象的成员 解析日期 我在用着 Date parse 2010 03 15 10 30 00 这适
  • iPhone 存储大量图像

    我有大量与 sqlite 数据库中的记录相对应的图像 我应该把它们存放在哪里 我有同一张图像的 3 个版本 大号 中号 拇指号 我不想将它们存储在数据库表中 而是从每条记录中引用它们 所有图像都具有相同的名称 每个小 中和大图像文件都将被称
  • 将 iPhone 应用程序降级到以前的 SDK 安全吗?

    我发布了一个带有 2 2 1 SDK 的应用程序 意识到我毫无意义地失去了仍在使用固件 2 2 的大部分客户 请参阅这篇文章 http arstechnica com apple news 2009 03 app store lessons
  • 如何将媒体附件添加到 iOS 10 应用程序中的推送通知中?

    有多个示例 您应该如何设置项目来添加使用 媒体附件 技术来显示图像的丰富通知 我已经阅读了其中的大部分内容 但我错过了一些内容 因为我的项目没有使用此有效负载显示任何丰富的通知 使用 APNS Tool 和 Boodle 进行测试 aps
  • 如何检查给定调用站点的重载决策集

    如何检查重载解析集 我在多个调用站点中使用了 4 个相互竞争的函数 在一个调用站点中 我期望调用一个函数 但编译器会选择另一个函数 我不知道为什么 这不是微不足道的 为了了解发生了什么 我正在使用enable if disable if打开
  • 如何在 iphone 和 ipad 的通用应用程序中调用 [[UIScreen mainScreen] 缩放]

    我正在制作一个可以在 ipad 和 iphone 上运行的通用应用程序 到目前为止一切顺利 但我刚刚将我的 SDK 更新到 ios4 并且想要调用 UIScreen mainScreen scale scale 不在 3 2 sdk 中 并
  • 使用 MKPolyline 在地图上绘制用户路线

    我对 Objective c 还很陌生 在我的应用程序中 我试图将用户采取的路线绘制到地图上 到目前为止 这是我仅获取用户当前位置的内容 import StartCycleViewController h import CrumbPath
  • 在 Swift 中使用 Obj-C 完成块

    在 Objective C 中 我有一个完成块类定义为 File h typedef void MYCompletionBlock BOOL success NSDictionary result NSError error 然后 在 Sw
  • iPhone签名捕捉

    是否可以通过电缆 USB 连接将签名从 iPhone 传输到 xls 文件 因此 这可能不完全是您正在寻找的内容 但这就是我捕获用户 用手指 手写笔 绘制的签名的方式 您的 UIImageView 将具有绘制的签名 我没有考虑过如何将签名图
  • 关闭应用程序后如何调试

    我正在尝试重现问题 这需要在特定位置关闭并重新打开我的应用程序 这是我的问题 1 如何查看我的日志 使用NSLog命令 当我的 iPhone 未连接到 XCode 时 2 是否可以将iPhone模拟器的特定位置 例如市中心 设置为默认位置

随机推荐

  • 使用 Django/Python 在创建临时文件的函数之外的内存中打开一个临时文件

    我和这个人度过了最糟糕的时光 在视图中 我创建了一个保存到内存的 csv 文件 我需要将该 csv 文件发送到 utils py 函数并发布到外部 api 我一辈子都不知道该怎么做 这真的让我发疯 我最初只是尝试在下面的 run test
  • python 中 %r、%s 和 %d 有什么区别? [复制]

    这个问题在这里已经有答案了 好吧 我总是在 python 上使用 r 但我不知道什么时候必须使用这些其他格式 这在中进行了解释Python 文档 简而言之 d将格式化一个数字以供显示 s将插入对象的表示字符串 即str o r将插入对象的规
  • 安全的伪流 flv 文件

    We use RTMP通过 Wowza 保护流媒体内容 它就像一个魅力 Wowza 是一个真正强大且健壮的媒体服务器 可用于商业目的 但我们遇到了一个问题 这个问题对我们来说每天都在变得越来越大 许多新客户由于防火墙规则而无法使用RTMP
  • 使用 JavaScript 播放声音

    我想创建一个表格 每行都有字符串和按钮 播放声音 每个按钮播放不同的声音 我想用这个方法来做 这是按钮
  • iPhone 在状态栏中添加图标(如电池指示器)

    我想知道是否可以在 iPhone 状态栏上添加一个图标 就像电池和 WiFi 指示器一样 我怎样才能做到这一点 Thanks 正如之前报道的 使用 SDK 无法做到这一点 如果您在越狱环境中工作 则状态栏图标需要放置在 System Lib
  • 将内联 SVG 保存为 JPEG/PNG/SVG

    我的 html 中有一个内联 SVG 我需要能够将其保存为 JPEG PNG 或 SVG 我尝试了几种不同的方法 将 SVG 转换为画布 然后转换为 JPEG 但我无法使这些方法正常工作 这是我的内联 SVG 的示例 font color
  • 将.CSV转换为.DBF(dBASEIII) VFP 6.0,一切都变成备注字段

    我正在尝试使用 python 将 excel 文件转换为 dbf dBASEIII 我当前的流程是 使用 xlrd 将 excel 文件转换为 csv 我从 csv 中取出标题并使用 获取新制作的 csv并使用dbf模块 https pyp
  • 何时断开与应用程序服务器建立的 bosh 连接以在 strope 中使用预绑定?

    这个问题是我之前关于这个问题的延伸 如何使用java smack库连接XMPP bosh服务器 我使用 Java 作为服务器端语言 我已经使用 smach jbosh 成功实现了 xmpp BOSH 连接 感谢 Deuteu 帮助我实现了这
  • 链接静态库时避免链接未使用的符号

    我正在使用苹果海湾合作委员会编译一个我要重新分发的 dylib 由于各种原因我正在使用一些库 比方说libz为了保持简单 由于这个库通常在 Mac 系统上找不到 我希望静态链接在通过将路径传递给 dylib 使用符号 a file以简化部署
  • C++ 犰狳访问三角矩阵元素

    访问犰狳矩阵的上三角或下三角元素的最有效 即平衡内存和速度 的方法是什么 我知道我可以为元素提供一个整数向量 但随着矩阵变得非常大 我希望避免携带另一个大向量 或者有没有一种有效的方法来快速创建下 上三角指数 例如 5x5 矩阵 C 11
  • 在多个VHost之间共享配置

    我正在管理一个 httpd 安装 其上运行多个站点 每个站点都在其自己的内部定义
  • IE 想要下载 JSON 结果....MVC3

    我的 MVC3 应用程序将用户的文档上传到我们的服务器 我返回一个 JsonResult 以显示任何错误 如果有 HttpPost public JsonResult SaveDocument DocumentModel model Htt
  • 如何使用带有 JSON 数据的 jquery 模板?

    我正在尝试编写一些 jquery 代码来从云帐户检索服务器列表并将它们显示在表格中 当我加载页面时 我的 JavaScript 会执行并返回正确的 JSON 但是当我尝试使用 jquery 模板生成 html 时 我永远不会得到任何输出 谁
  • 使用正则表达式查找页面上而非锚点中的电话号码

    我有这个搜索电话号码模式的正则表达式 d 3 s d 3 s d 4 这会匹配以下格式的电话号码 123 456 7890 123 456 7890 123 456 7890 123 456 7890 123 456 7890 123 45
  • 从数据集和数据表生成水晶报表

    我需要在一个应用程序中的 Crystal Reports 中生成一个报告 其中只有一个独立的数据集 未连接到任何类型的数据库 另外 我需要根据数据表中的值生成报告 能否请您指点一下 我是新手 我有一个模板 但我不知道如何从数据表生成报告 也
  • Spring Boot 错误:由于缺少 EmbeddedServletContainerFactory bean,无法启动 EmbeddedWebApplicationContext

    我正在尝试使用 Spring Data GemFire 将数据放入 GemFire 中 我跟着这个link Region stockdata public class StockInfo Id public String symbol pu
  • 通过 N 列块重塑 Pandas 数据框列

    我有 1 个数据框 其中的列块需要重新调整为行 我尝试使用 stack 和 Melt 但无法找到正确的方法 这是我期望的一个例子 data id a1 a2 a3 a4 year 20 20 19 18 b A 1 2 3 4 b B 5
  • 我在关于 c++ 的声明中遗漏了什么吗?

    除了声明 定义和预处理器指令之外 您不能在函数之外使用代码 这个说法准确吗 还是我遗漏了什么 我正在教我的侄子编程 他试图在 main 之前添加一个 while 循环 他还很年轻 我想给他一个他能理解的简单的硬规则 不完全是 你还可以将表达
  • 就渲染时间和性能而言,面板按什么顺序最有效?

    很多时候 多个面板都适合我想要的布局 但我知道不同面板类型的渲染时间存在差异 例如 MSDN指出 一个比较简单的Panel 例如Canvas 可以显着地 比更复杂的性能更好Panel 例如Grid 那么就渲染时间和性能而言 WPF 面板按什
  • NSNumber >= 13 不会保留。其他一切都会

    我当前正在处理的代码需要将 NSNumber 对象添加到数组中 所有值为 0 12 的 NSNumber 都可以正常添加 但 13 以后会导致 EXC BAD ACCESS 我打开 NSZombieEnabled 现在得到 CFNumber