关闭模态视图控制器时“[CALayer release]:消息发送到已释放的实例”

2023-12-25

这几天我一直在纠结这个问题,找不到解决办法,所以请教一下。

我有两个 UIViewController:NewPostUIViewController 和 SettingsUIViewController。在第二个中我有一个字段:

id<SettingsUIViewControllerDelegate> delegate

第一个实现协议

SettingsUIViewControllerDelegate

当按下按钮时,在 NewPostUIViewController 中执行以下代码:

SettingsUIViewController *settingsUIViewController  = [[SettingsUIViewController alloc] initWithNibName:@"SettingsView" bundle:nil]; 
settingsUIViewController.title = NSLocalizedString(@"Settings", @"Settings view title");
settingsUIViewController.delegate = self; 
[self presentModalViewController:settingsUIViewController animated:YES];
[settingsUIViewController release];

当我想关闭 SettingsUIViewController 时,我调用(SettingsUIViewController 中的代码):

[delegate settingsAreDone:sender];

和 settingsAreDone 看起来如下(NewPost UIViewController 中的代码):

    [self dismissModalViewControllerAnimated:YES];

这一切的结论是:

[CALayer release]: message sent to deallocated instance 0x5a76840

我尝试通过在两个视图控制器的释放方法中设置断点来调试代码,但这些方法被频繁调用,因此很难说出导致此问题的原因。

有任何想法吗?


首先,您收到的错误并不表明 -release 正在发送到视图控制器,因此视图控制器中的断点无济于事。过度释放发生在 CALayer 上,这可能是模态动画的一部分。

首先,我们从有关委托的一些基础知识开始。我对这个原因感觉不太好,但你应该总是从简单的基础开始。您的 SettingsUIViewController 委托属性应该分配,而不是保留,这样您就可以避免保留循环。这可能已经是正确的,但如果不正确,您可能会遇到对象存在时间比您预期的时间长的情况(因此可以在其目标消失后发送消息)。同样,可能不是问题,但易于检查和修复。

接下来,您应该查看崩溃时的堆栈跟踪。是谁打来的[CALayer release]?一个可能的原因是拥有的视图控制器在动画停止之前被释放。当您关闭设置控制器时,您是否立即关闭NewPost控制器?

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

关闭模态视图控制器时“[CALayer release]:消息发送到已释放的实例” 的相关文章

  • UIButton 图像未更改/更新

    首先 我对 Objective C 还很陌生 并且仍在尝试尽可能多地学习 所以请耐心等待 现在我有一个以编程方式创建的 UIButton 按下按钮时 将显示一个 UIActionSheet 其中包含 相机 选择照片 或 取消 选项 然后 按
  • 当用户到达 UITableView 的最后一行时,如何动态添加行?

    我有一个UITableview当前显示 10 行 固定为静态 现在我想在其中添加一个功能 当用户到达最后一行时 我想向表中添加更多 10 行UITableView 我的意思是目前我在应用程序中显示固定的 10 行 但现在我想在用户到达上一个
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • 滑动删除不起作用

    滑动删除功能在我的表格视图中不起作用 我已经在导航栏中实现了 commitEditingStyle 委托和编辑按钮 因此 当用户单击编辑按钮时 删除和添加按钮会相应显示 但是 在滑动时 删除按钮不会出现 并且似乎它无法将滑动识别为对 set
  • iPhone 中的 NSNotification

    我正在将 NSSNotifcation 发送到 iPhone 应用程序中的另一个视图控制器 但它的观察者方法收到两次通知 这可能如何 任何人都可以指导我 我已经使用此代码来发布通知 NSNotificationCenter defaultC
  • 删除指向对象的 C++ 指针

    我认为删除命令会释放我分配的内存 有人可以解释为什么删除后我似乎仍然有内存在使用吗 class Test public int time int main Test e e new Test e gt time 1 cout lt lt e
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • 将 SSLSetEnabledCiphers 与 AFNetworking 结合使用来禁用弱密码

    我正在尝试禁用一些密码 弱 例如单个 DES 单个 DES 40 位等 我尝试过使用这段代码在 Cocoa 中使用 CFSocket CFStream 时如何设置 SSL 密码 https stackoverflow com questio
  • 忽略触摸事件,让其下面的视图处理触摸?

    我有一个用户可以触摸的可拖动视图 但它的某些矩形将没有图像 alpha 0 当用户单击透明区域时 我能够在没有 alpha 信息的情况下构造透明区域 我希望透明区域下方的视图 同一类 来检测触摸 我的策略是当用户触摸透明区域时让视图忽略触摸
  • 如何禁用 iPhone 邮件应用程序中的电话号码链接?

    我的公司正在发送数字电子邮件收据 但遇到了 iPhone Mail 检测数字数据并将其自动链接为电话号码的问题 我已经看到元标记应该可以解决 iPhone 上的 Mobil Safari 中的问题 但该技巧似乎不适用于 Mail 有谁知道如
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 虚拟乐器 iPhone 应用程序中的 VoiceOver 辅助功能?

    我收到盲人用户的评论 称我的一些声音和音乐相关应用程序只能在关闭 VoiceOver 的情况下使用 在 iOS 设备上启用 VoiceOver 辅助功能后 是否可以启用音乐键盘或鼓垫触摸区域 以便在点击键盘键或虚拟鼓组 等 时可以立即播放音
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • 在 iOS 7 中 viewForHeaderInSection 部分是从 1 开始而不是从 0 开始

    我正在处理UITableView在我的项目中 这个项目是在 Xcode 4 5 中创建的 现在我正在使用 Xcode 5 所以我的问题是何时在 iOS 6 中运行我的项目 viewForHeaderInSection方法部分从 0 开始没问
  • iPhone 上的语音识别

    我需要开发一个识别语音的 iPhone 应用程序 并根据结果执行进一步的任务 我知道iPhone 3 0不支持语音识别 我需要在服务器端实现语音识别软件 我只知道这个事情 因为我是新手 所以我不知道如何处理 意味着我需要购买哪些软件并在服务
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • Python 中的 Webdriver 屏幕截图

    使用python在windows上使用Selenium Webdriver进行屏幕截图时 屏幕截图直接保存到程序的路径中 有没有办法将 png文件保存到特定目录 Use driver save screenshot path to file
  • 允许用户选择图像的相机或图库

    我想做的事情看起来很简单 但经过几天的搜索 我不太明白 我有一个应用程序 允许用户选择多个 最多 5 个 图像 我正在使用一个ImageView 当用户点击ImageView 我想让他们选择 从图库中选择图像 或 使用相机捕捉图像 我开始使
  • 拉伸div以填充body

    div style height 20px background color red div div style background color black div div style height 20px background col
  • Spark 客户端模式 - YARN 为驱动程序分配容器?

    我在客户端模式下在 YARN 上运行 Spark 因此我希望 YARN 仅为执行器分配容器 然而 从我所看到的来看 似乎还为驱动程序分配了一个容器 并且我没有得到与预期一样多的执行程序 我正在主节点上运行 Spark Submit 参数如下
  • JSTL 表达式语言访问对象属性

    我今天正在学习一个教程 这个教程让我摸不着头脑一个小时 考虑 public class MyClass public int getTotal amount 100 return amount 以及 JSP 的摘录 p Total obje
  • 万智牌数据库设计

    我想为我拥有的 MTG 卡创建一个数据库 设计会是什么样的 我想存储每张卡的以下信息 1 Name of card 2 Set the card belongs to 3 Condition of card 4 Price it sold
  • 位图插值c#

    网格尺寸 160 160 行数 列数 16 16 我为此创建了一个位图 网格的每个单元格都填充有不同的颜色 我需要执行颜色插值 我猜您想要执行以下操作 拍摄 16x16 像素图像并将其插值为 160x160 像素图像 以下是三个示例输出 您
  • 实现WebView数据库配额委托

    我如何实现这个方法 见下文 我是 Objective C 的新手 我只是不太了解它 From http lists apple com archives Webkitsdk dev 2008 Apr msg00027 html http l
  • 确定将在 php 中发送的 http 状态

    我正在尝试为管理应用程序标头的类编写一个测试用例 它发送的标头中有 http 状态标头 我正在使用 headers list 来查看将发送哪些标头 如果我现在发送标头的话 headers list 的问题是它不包含 http 状态标头 尽管
  • 为什么 lapply() 不保留我的 data.table 键?

    我的列表中有一堆 data tables 我要申请unique 到我的列表中的每个 data table 但这样做会破坏我的所有 data table 键 这是一个例子 A lt data table a rep c a b each 3
  • 这两组陈述之间的确切区别是什么?

    Set
  • 如何重新索引 pandas 数据透视表

    我创建了一个数据透视表 该表根据其中一列和时间索引的月份进行分组 这是数据透视表 AWRT AWFT AWDT Time type April All 38 190119 65 789103 27 598984 DHW 19 676627
  • 隐式、显式和流利等待之间的区别

    两者之间的确切区别是什么implicitwait explicitwait and fluentwait 您能举例说明吗 我已经发布关于此的博客文章 https medium com austenjt difference betwen i
  • 为什么 (x += x += 1) 在 C 和 Javascript 中的计算结果不同?

    如果变量的值x最初为 0 表达式x x 1在 C 中将计算为 2 在 Javascript 中将计算为 1 C 的语义对我来说似乎很明显 x x 1被解释为x x 1 反过来 这相当于 x 1 x x where x is 1 at thi
  • 在 Angular 6 工作区中安装 NPM 包

    我刚刚开始学习 Angular 6 和 CLI 并创建了一个项目 如下所示 ng new my demo cd my demo ng g library foo prefix my 我的库中没有我想要添加的内容ngx bootstrap因为
  • Scrapy Spider整理抓取过程,不刮任何东西

    我有一只蜘蛛 它会在亚马逊上抓取信息 蜘蛛读取一个 txt 文件 在其中写入它必须搜索的产品 然后进入该产品的亚马逊页面 例如 我使用 keywords laptop 来更改要搜索的产品等 我遇到的问题是蜘蛛无法工作 这很奇怪 因为一周前它
  • 软件开发中的测试人员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我的公司 我们开发一种软 件产品 到目前为止 我们还没有任何测试人员 所以基本上开发人员就是测试人员 当然还有客户和用户 不好 我们的团队现在
  • lsnrctl start rane 当我触发此命令时出现此错误

    oracle myserver lsnrctl start rane LSNRCTL for Linux Version 11 2 0 1 0 Production on 27 SEP 2016 23 04 58 Copyright c 1
  • 错误:无法解析“C:\projects\Project-CMS\Project.Web\src”中的“./app/app.module.ngfactory”

    当我为 Angular 5 应用程序创建构建时 出现以下错误 当我创建构建时它工作正常 ng build 当我创建 buildproductttion 时它显示错误 ng build prod 我没有在应用程序中的任何地方使用 ngfact
  • 关闭模态视图控制器时“[CALayer release]:消息发送到已释放的实例”

    这几天我一直在纠结这个问题 找不到解决办法 所以请教一下 我有两个 UIViewController NewPostUIViewController 和 SettingsUIViewController 在第二个中我有一个字段 id