问题标签 [dealloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - iPhone - 内存管理问题?
假设我的应用程序委托中有一个导航控制器。为什么必须在我的 appDelegate 中的 dealloc 方法上释放它?当调用我的 appDelegate 的 dealloc 方法时,这意味着用户正在退出应用程序,因此泄漏不会影响我的应用程序。
那么为什么我要在我的 appDelegate 的 dealloc 方法中释放任何东西呢?
iphone - NSTimer 没有停止
我有一个带NSTimer *myTimer;
变量的类。在某些时候我会:
此外,我有一个方法:
当课程通过以下方式释放时,我会停止计时器:
现在,问题是当我释放课程时,计时器会不断地继续触发事件。难道我做错了什么?似乎从不调用 dealloc 方法,否则 myTimer 将为零,即使选择器被触发,它也不会进入if(myTimer)
ipad - iOS AVAudioPlayer 多个实例,一次多个声音
我正在为 iPad 编写具有“读给我听”选项的交互式儿童读物。
对于每个页面(具有索引),都有一个音频剪辑产生“读给我听”功能。该功能运行良好,除了当我翻页时,即使新音频开始时,前一页的音频仍然播放,这是我的示例:
比如说,我在第 2 页的音频停止播放之前转到第 3 页,两个剪辑相互播放,这会惹恼孩子们,我知道这对我有用。
在分配新文件之前,我尝试过放置 [rtmAudio stop],但这似乎不起作用。在开始新剪辑之前,我需要一种方法来杀死以前的音频剪辑。
objective-c - 自杀:Objective-C 对象自己调用自己的 -dealloc 方法
Objective-C 中的对象自杀是一种好习惯吗?也就是说,对于一个对象来说,[self dealloc]
在哪里-dealloc
可以像往常一样有序地声明?主要风险是什么?
碰巧我有一个具体的例子,一个扩展 NSObject 并包含一个 NSTimer 实例和一个 NSUInteger 的自定义计时器对象,该对象设置为限制计时器触发的次数。当时间到了,对象告诉计时器,然后通过调用它的方法-invalidate
自杀。-dealloc
由于这是自动的,我们不必担心必须跟踪对象或至关重要地知道何时是释放它的正确时机。
有关更详细的解释,请参阅我的帖子。
uitableview - 删除 UIView 的所有痕迹
我还有一个问题。我有这个 NavigationController,它有一个委托:MainViewController。在这个导航控制器中,有一个表视图,它具有相同的委托:MainViewController。每当我在表格中按下一行时,就会弹出一个名为:itemViewController 的视图。
现在,这一切都非常有效。但是当我回击时,我希望 itemViewController + 它的视图被完全遗忘,它必须被 100% 销毁。就像它从未存在过一样。
它有一个逻辑背景:每当我完成视图时,我都会按下。当我想再次查看它时,我希望它被重新加载,我不希望使用对视图的旧引用,因为它显示的数据一直在变化。所以,在我现在的情况下,我必须重新启动应用程序才能在视图中查看新数据。
我觉得这真的很令人沮丧。所以帮帮我,当我从表格视图再次单击它时,如何确保删除该视图并完全重新加载?
iphone - 如何修复奇怪的保留计数(1 init - 3 retaincount)?+ 编辑:dealloc 问题
所以我的代码是这样的:
我得到:
如何解决这个烂摊子?我不明白我做错了什么,这部分有时会由于内存不足而导致应用程序崩溃。
编辑:相关问题。
所以情况和上面定义的一样,但问题是 ArticleControllerController 的 dealloc 方法永远不会被调用。
更多代码:
}
如果此方法重复多次 ArticleControllerController 创建大量各种界面元素,但它的 dealloc 方法永远不会释放它们(保留计数永远不会下降到零),所以我认为这就是我试图解决的内存崩溃问题现在几天。
那是怎么回事?我可以做更多的事情来解决这个问题吗?
objective-c - 在init中调用dealloc?
我正在编写一个框架,并且我有一个带有自定义 init 方法的对象:
如果发生错误,在方法dealloc
内部调用是否安全?init
我不确定这一点,内存管理是我生命中最重要的事情之一。
谢谢。
objective-c - 使用 dealloc 的小代码中的内存泄漏
请帮助我,这个代码是否正确?我的意思是,我们真的需要在这个类中使用 dealloc 方法吗,为什么需要或不需要呢?如果我们在这里不使用 dealloc 会不会是内存泄漏?谢谢!
objective-c - 如何确保在应用程序终止时调用您的 dealloc 代码?
根据 NSObject 的文档:
重要提示:请注意,当应用程序终止时,可能不会向对象发送 dealloc 消息,因为进程的内存在退出时会自动清除 --- 简单地允许操作系统清理资源比调用所有内存管理更有效方法。
这很好,但是如果我的对象需要在 dealloc 上做一些事情,比如将其状态保存到磁盘或记录一些东西?如何确保调用该代码?
iphone - 如何避免将回调发送到已释放的实例
以下过程导致我的应用程序崩溃:
- 用户打开视图并向服务器发送请求
- 请求在后台执行
- 用户导航回根视图
- 请求已完成
并执行以下代码
与此同时,其他模型/视图已被解除分配,消息被发送到解除分配的实例。
callback
是类型id
并且符合KalDataSourceCallbacks
协议。
如何避免将消息发送到已释放的对象?
PS:我的问题类似于这个问题
编辑:
我将尝试callback
在方法中设置为零dealloc
(在我的数据源类中)。这并不能解决问题,因为MyDataSource
它始终存在,并且只有在释放dealloc
时才应调用该方法RootViewController
(关闭应用程序时应该发生什么)。
到目前为止我所做的:
现在MyDataSource
由 my 中的一个属性保留RootViewController
:
KalViewController 不保留其数据源。您可能希望在实例变量中存储对 dataSource 的引用,以便在日历被销毁后释放它。
我还创建了一个callback
属性:
目前该应用程序没有崩溃。我必须在设备上进行测试。添加callback = nil
在这里不会做任何事情,因为从不调用 dealloc。
MyDataSource
日历销毁后如何释放?这不起作用,因为我不知道日历是否已被破坏。所以数据源只能存在于整个应用程序运行时。
编辑2:
我可以检查callback
以nil
了解它是否已发布?
这没有帮助。
编辑3:
该应用程序没有崩溃,因为我保留了委托:
应该
那么,对于我的特殊情况,如何避免将该方法loadedDataSource
发送到已释放的对象呢?