NSZombies 正在吃我应用程序的大脑!

2024-01-08

我遇到了保留/释放问题。我的视图非常复杂,因此我将 NSZombieEnabled 设置为 YES,并试图准确地找到哪个对象引起了我的悲伤。为了加快这个过程,我想知道是否有提示或技巧可以追踪僵尸回到他们挖出的坟墓(抱歉,不得不),或者回到与他们相关的物体?神秘的控制台消息似乎没有提供太多见解:

NSInvocation: warning: object 0x1076850 of class '_NSZombie_CALayer' does not implement methodSignatureForSelector: -- trouble ahead

我没有称为“前方麻烦”的选择器。

Edit- 包括堆栈跟踪:

#0  0x3026e017 in ___forwarding___
#1  0x3024a0a2 in __forwarding_prep_0___
#2  0x302042e8 in CFRelease
#3  0x00c4fc31 in CALayerUpdateSublayers
#4  0x00c4e173 in -[CALayer dealloc]
#5  0x00c4000e in CALayerRelease
#6  0x00c48dad in CALayerFreeTransaction
#7  0x00c410b8 in CA::Transaction::commit
#8  0x00c492e0 in CA::Transaction::observer_callback
#9  0x30245c32 in __CFRunLoopDoObservers
#10 0x3024503f in CFRunLoopRunSpecific
#11 0x30244628 in CFRunLoopRunInMode
#12 0x32044c31 in GSEventRunModal
#13 0x32044cf6 in GSEventRun
#14 0x309021ee in UIApplicationMain
#15 0x00001eb4 in main at main.m:14

编辑2:ObjectAlloc

在 ObjectAlloc 中查找有问题的内存地址,我发现两个匹配项:

#    Address     Category           Creation Time      Size Responsible Library Responsible Caller
0   0x1076980   GeneralBlock-48    00:11.470       48      QuartzCore  -[CALayer setDelegate:]
1   0x1076980   CALayer            00:11.552       48      UIKit       -[UIView _createLayerWithFrame:]

深入研究#0 GeneralBlock-48:

#   Category        Event Type  Timestamp   Address Size    Responsible Library Responsible Caller
0   GeneralBlock-48 Malloc      00:11.470   0x1076980   48  QuartzCore  -[CALayer setDelegate:]
1   GeneralBlock-48 Free        00:11.551   0x1076980   -48 QuartzCore  -[CALayer addAnimation:forKey:]
2   CALayer         Malloc      00:11.552   0x1076980   48  UIKit   -[UIView _createLayerWithFrame:]

深入研究#1 CALayer:

#   Category        Event Type  Timestamp   Address    Size Responsible Library Responsible Caller
0   GeneralBlock-48 Malloc      00:11.470   0x1076980   48  QuartzCore  -[CALayer setDelegate:]
1   GeneralBlock-48 Free        00:11.551   0x1076980   -48 QuartzCore  -[CALayer addAnimation:forKey:]
2   CALayer         Malloc      00:11.552   0x1076980   48  UIKit   -[UIView _createLayerWithFrame:]

好吧,我现在看到,在 #0 或 #1 中进行更深入的钻探会揭示完全相同的信息。我想这应该可以将故障排除减半......但我仍然不知所措......


我相信回溯只是向僵尸发送消息的点。此回溯通常为您提供有关导致崩溃的原因的零信息。它几乎只告诉您正在过度释放的对象的类型和地址。

我经常用来跟踪像这样的过度释放的技术是使用 Instruments 的 ObjectAlloc 来跟踪所有保留和释放。在ObjectAlloc中找到过度释放对象的地址,然后列出所有retain/release调用,然后尝试平衡每个retain与release。一旦找到没有保留匹配的版本,您就发现了问题。

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

NSZombies 正在吃我应用程序的大脑! 的相关文章

  • iPhone触摸形状或原始数据

    有人知道是否可以检测触摸形状吗 也许通过获取原始触摸屏数据 我在这里找到了这个问题 答案 如何获取原始触摸屏数据 https stackoverflow com questions 789737 iphone raw touchscreen
  • 如何在 Cocoa with Core Data 中上传和存储文件?

    我有一个应用程序 我希望能够将文件上传到其中 我可以想象序列化数据 将其放入数组中 然后序列化数组并将其放入核心数据中 但这似乎不太正确 我还可以想象将文件复制到应用程序的支持文件中 获取这些文件的 NSURL 并存储数组或 NSURL 无
  • Swift 中 UIViewController 子类成员的双重初始化

    我想制作一个自定义容器视图控制器并向其子类添加一些成员UIViewController 当我尝试使用以下代码从应用程序委托初始化它时 self window UIWindow frame UIScreen mainScreen bounds
  • 莫名其妙的 MissingFieldException

    在下面的代码片段中 它会抛出 MissingFieldException Field Not Found DepthBidLevels 异常 但仅在下面描述的某些奇怪情况下才会抛出 for int i DomSize 1 i gt 0 i
  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • 如何在 VS QuickWatch 窗口中输入日期时间值?

    我正在尝试更改 QuickWatch 窗口中的一些日期时间数据 我尝试过 1 29 2009 等 但似乎都不起作用 它只是一直回到 12 00 00 AM DateTime 中的年 月 小时等字段是不可变的 您无法在 QuickWatch
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • NSMenuItem、自定义视图和 mouseUp 的奇怪问题:

    我在这里遇到了一个非常非常奇怪的 NSMenu 问题 我使用的大约一半的 NSMenuItems 通过 NSMenuItem 上的 setView 方法具有自定义视图 在此自定义视图中 我实现了 mouseUp 来捕获用户单击菜单项的时间
  • XCode 调试 - 我可以绕过反汇编代码的单步执行吗

    调试项目时 在 XCode 中设置断点后 我将开始单步执行代码 然后我会遇到反汇编代码 我认为这些代码是对没有可用源代码的各种框架的调用 这是一个正确的假设吗 有没有一种方法 可能通过我尚未找到的项目设置 来抑制此汇编代码的显示 而不必单步
  • activeProcessorCount 和processorCount 之间有什么区别?

    The NSProcessInfo类有两个名为processorCount and activeProcessorCount 该文档对于处理核心和活动处理核心之间的区别尽可能没有帮助 或者 换句话说 什么才算是一个inactive可可的处理
  • 如何在可可中使用核心动画对 png 序列进行动画处理(非触摸)

    我想在 NSImageView 中对 png 序列进行动画处理 但我无法使其工作 它只是不想显示任何动画 有什么建议吗 这是我的代码 void imageAnimation NSMutableArray iconImages NSMutab
  • 在 iPhone 模拟器中从硬盘读取文件

    是否可以将文件 从我的普通文件系统 读入在 iPhone 模拟器上运行的 iPhone 应用程序 据我所知 iPhone 本身没有 用户可访问的 文件系统 但这只是为了测试 并且只能在模拟器中运行 该文件将是一个可以在应用程序运行时编辑的文
  • 使用 GDB 远程调试 MPI

    我正在尝试从 pi 的远程访问组中调试我使用 MPI 编写的代码 我无法直接访问 Pi 以便能够使用 GUI 来调试代码 我已经尝试过使用屏幕显示的内容question https stackoverflow com questions 3
  • 使用 NSWorkspace 获取所有正在运行的进程

    我想获取 MacO 中所有正在运行的进程的列表 当我使用 myWorkspace runningApplications 我只得到当前用户应用程序的列表 我如何找到 root 或 mysql 所有者的所有进程的列表 看一下技术问答 QA11
  • 表视图未根据绑定更新

    这是一个非常新手的问题 这是我以前做过很多次的事情 但这次我遗漏了一些东西 在我的 AppDelegate h 文件中 我声明一个 NSArray 并将其设置为属性 interface AppDelegate NSObject NSArra
  • 为什么 UIWebView 吃这么多内存?

    我正在使用 UIWebView 为我的 iPad 应用程序加载纯文本 HTML 页面 HTTP页面的大小只有40KB 但是当我使用仪器监控加载 UIWebView 的内存使用情况时 我发现它消耗了大约 20MB 内存 如果我滚动 Web 视
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • 深入了解崩溃的根源

    我遇到了以下崩溃 我无法按需复制 但确实发生了足以引起用户注意的事件 该崩溃报告也已被符号化 怎么查原因啊 这似乎只发生在 4 1 上 Exception Type SIGSEGV Exception Codes SEGV ACCERR a

随机推荐

  • 在 PHP 上使用 Curl 发送空 字段

    欢迎大家 这是我遇到的一个问题 我正在尝试使用 PHP 和 CURL 将数据和文件发送到服务器 服务器接受包含 6 张照片的数据 如果 FILES 数组中的项目少于 6 个 这是一个错误 因此 如果我发送所有 6 张照片 一切都会很顺利 但
  • 从字符串动态创建 xml

    这是正确的程序 现在运行良好 谢谢先生 我是安卓新手 我有一个字符串 其中包含服务器返回给我的 XML 格式数据 它是一个 XML 文档 我想在Android中解析它XmlResourceParser但它只接受存储在您设备上的 xml 文档
  • C# ListView 平铺宽度 100%?

    我有一个 ListView 设置为 Tileview ListView 宽度为 300 平铺宽度也是如此 当图块数量没有溢出导致滚动条时 此方法可以正常工作 然而 当它确实溢出时 当出现垂直滚动条时 也会出现水平滚动条 因为垂直滚动条降低了
  • 在无序列表中动态设置排序

    好的 这就是我现在面临的问题 我有一个动态生成的无序列表 最初编写代码的人将 UL 设置为可通过列表项进行排序 即您可以切换列表中的 1 和 2 等 该代码看起来有点像这样 ulFeatures sortable update functi
  • 如何获取该字符串中标签的 href 属性?

    在这个字符串中存在数字 li 标签 我想获取标签的 href 属性 如下所示 http bipardeh94 blogfa com target blank http avaejam blogfa com target blank 和 我想
  • 在 Python 中访问 GPU 硬件规格?

    我想使用 Numba 或类似的 Python CUDA 包访问各种 NVidia GPU 规范 可用设备内存 二级缓存大小 内存时钟频率等信息 来自阅读这个问题 https stackoverflow com questions 48654
  • 重启Kubernetes集群后RabbitMQ启动失败

    我在 Kubernetes 上运行 RabbitMQ 这是我的 sts YAML 文件 apiVersion v1 kind Service metadata name rabbitmq management labels app rabb
  • python float 格式奇怪吗?

    我正在尝试调试两个执行非常相似代码的不同 python 脚本 这些脚本设置a 这是一个简单的浮点数 对于脚本 1 ipdb gt print sys version 2 7 r27 82500 Jul 15 2010 13 04 38 GC
  • Amazon S3 的访问被拒绝错误

    我在使用 Amazon S3 时遇到 访问被拒绝 错误 但无法找出原因 我的设置如下 STATIC URL http s3 amazonaws com s AWS STORAGE BUCKET NAME 什么会导致访问被拒绝错误 我已经验证
  • Masonry 的 CSS 系统替代方案

    我记得有一个 CSS 网格系统可以替代 Masonry Vanilla http masonry desandro com http masonry desandro com 该网站是黑色背景并显示 排列彩色框 元素周期表元素 它还具有基于
  • 为什么 include Guard 不让循环 #include 起作用?

    我有三门课 GameEvents Physics and GameObject 我有每个人的标题 GameEvents有一个Physics和一个列表GameObjects Physics有一个列表GameObjects 注意循环依赖 我正在
  • While 与 Do While

    Merged https meta stackexchange com questions 158066 what is a merged question with 测试循环在顶部还是底部 while 与 do while 关闭 ques
  • 现代芯片上的浮点与整数运算性能

    考虑加法模型上的维特比解码器 它花时间进行添加和比较 现在 考虑两种 一种是 C C float作为数据类型 另一个与int 在现代芯片上 你会期望int跑得比float 或者管道的奇迹 以及没有乘法和除法 会让一切变得均匀吗 取决于你的意
  • Cobertura“无法找到文件”问题

    谁能帮我理解这里出了什么问题吗 我正在使用 Cobertura 1 9 4 1 进行 Java 代码覆盖 我想附加带有 HTML 报告的源文件 我使用以下命令生成报告 cobertura report sh format html data
  • 如何改变HTML5进度条的颜色

    我有 HTML 进度条 其值动态变化
  • 如何配置EasyMock类扩展3.1?

    我想将 EasyMock 类扩展 3 1 添加到我的项目中 但 EasyMock 3 1 CE 的依赖项存在问题 我添加依赖项 cglib 2 2 2 jar 和 asm 4 0 jar 并引发异常 java lang VerifyErro
  • HttpClient 在 Blazor Web assembly 应用程序中的请求中不包含 cookie

    我有一个 Blazor Web assembly 应用程序 其中包含一个用户服务 旨在访问 API 来检索用户的详细信息 该服务如下所示 public class UserDataService IUserDataService publi
  • Delphi:TFrame错误没有可插入的帧

    我碰巧发现 Delphi XE6 IDEforgot全部TFrame我过去创造的后代 更具体地说 当我单击 标准 gt 框架 时 选择框架的对话框不再显示 相反 它显示以下错误消息 没有可插入的框架 可以从 文件 新建 其他 选择中创建新框
  • 使用继承正确扩展 tkinter 小部件

    我对 python 类有点陌生 我还不知道如何很好地处理它们 我保证我已经做了一些研究来解决这个问题 但仍然不知道如何解决 所以 事情是这样的 我正在尝试使用 python 类来定义 tkinter 小部件 这样我就可以相当快地实现它们 这
  • NSZombies 正在吃我应用程序的大脑!

    我遇到了保留 释放问题 我的视图非常复杂 因此我将 NSZombieEnabled 设置为 YES 并试图准确地找到哪个对象引起了我的悲伤 为了加快这个过程 我想知道是否有提示或技巧可以追踪僵尸回到他们挖出的坟墓 抱歉 不得不 或者回到与他