问题标签 [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.

0 投票
2 回答
1742 浏览

iphone - 什么最能解释 [myVar dealloc] 和 [myVar release] 之​​间的区别?

我想我知道区别,但不知道如何正确解释。

dealloc 会立即完全删除该变量保留的内存。

release 将该变量内存的保留计数器递减 -1。如果它是1,那么它是0,所以它会在那个时刻与dealloc具有相同的效果。

是对的吗?还是有更好的简短解释?

0 投票
1 回答
268 浏览

iphone-sdk-3.0 - 我应该在我的 dealloc 函数中释放一个 IBOultet 吗?

如果我的 .h 文件中有类似的内容:

我应该在 .m 文件的 dealloc 函数中释放它吗?

0 投票
2 回答
5217 浏览

objective-c - 在 init 和 dealloc 方法中有效使用访问器?

我现在从几个来源(stackoverflow.com、cocoa-dev、文档、博客等)听说在 init 和 dealloc 方法中使用访问器和设置(foo、setFoo:) 是“错误的”。我了解,如果您这样做,则极有可能混淆正在观察该属性的其他对象。(这里给出一个简单的例子)

但是,我不得不说,我不同意这种做法,原因如下:

新的 Objective-C 运行时(iPhone 上的运行时和 10.5 中的 64 位运行时)允许您声明属性而无需声明相应的 ivar。例如,以下类将在 10.5 或 iPhone(设备,而不是模拟器)上编译得很好:

了解以上是一个完全有效的 Objective-C 类,假设我决定编写一个初始化程序,并且出于内存管理的目的,一个 dealloc 方法(因为 GC 在 iPhone 上不可用)。我读过的关于初始化器和释放的所有内容都会引导我编写以下两种方法:

但是,根据文档和流行观点,这是“错误的”。所以我的问题是这样的:

  1. 我应该如何在不使用访问器的情况下初始化 someObject ?您可能会说编译器(或运行时或其他)将确保 someObject 已设置为 nil,但我认为依赖它是不恰当的行为。拥有良好的 C 语言背景,由于没有正确初始化变量,我已经看到了相当多的错误,这似乎没什么不同。
  2. 如果我不应该在 dealloc 方法中使用访问器,我该如何释放 someObject?

如果其中任何一个的答案是“你不能”,那么在你的 init 和 dealloc 方法中使用访问器有什么不好呢?

0 投票
1 回答
279 浏览

iphone - 释放 UIApplicationDelegate 拥有的对象有什么好处吗?

抛开最佳实践不谈,如果我创建了一个属于我的 UIApplicationDelegate 类的对象,并且在应用程序运行的整个过程中一直存在,那么在 UIApplicationDelegate 的 dealloc 方法中添加 [object release] 语句是否有任何真正的优势?

唯一会被调用的时间是用户关闭应用程序时,我假设该应用程序使用的整个内存空间随后被释放。

从最佳实践的角度来看,当然,在整个应用程序中一致地添加内存管理代码是有意义的,但是从执行的角度来看,我很好奇它是否真的重要?

注意:我是从 iPhone 开发者的角度来问这个问题的。我不确定它是否与 Mac OSX 的角度不同?

0 投票
2 回答
19714 浏览

objective-c - 将实例 ID 打印到 NSLog?

在一个类的 dealloc 方法中,我将如何打印出被释放实例的 ID(或其他一些唯一标识符)?

这可能吗?我只是想在控制台中获得更多反馈,以帮助学习。

非常感谢-加里-

0 投票
2 回答
1942 浏览

objective-c - 什么时候释放的对象最终被销毁?

当你在 Objective-C 中释放一个对象时(假设它的释放计数为 1),它的释放计数减为 0 并且调用了 dealloc 方法。对象是在 [super dealloc] 之后立即销毁,还是添加到池中并在池耗尽时销毁?

我假设释放的对象在 dealloc 结束时被销毁(当调用 [super dealloc] 时)我知道自动释放变量被添加到池中,只是想确定正常释放的对象会发生什么。

干杯-加里-

0 投票
2 回答
1953 浏览

iphone - 是否可以检查 iPhone 上的 OpenGL ES 纹理是否真正被释放?

手册只是指示您编写:

并声称纹理将被删除。iPhone内存稀缺,我想确保这些纹理真正释放出来。

Leaks 仪器无法检测到这一点,坦率地说,我有点担心。我真的很想确保纹理真的消失了。

谢谢你。

0 投票
2 回答
292 浏览

objective-c - 继承释放顺序?

在我目前的测试中,我有一个继承自“celestialClass”的类“PlanetClass”。我的问题是当我释放我的“PlanetClass”对象时,它会通过两个 dealloc 方法,首先释放 Planet 对象,然后释放 Celestial 对象。我将 dealloc 添加到 celestial 以确保我可以释放 iVar“bodyName”,我想我有这个权利,我只是想检查一下?

干杯-加里-

0 投票
3 回答
667 浏览

objective-c - objective-c 对象没有得到释放:ed

我在objective-c中遇到了一个对象没有被释放的问题。我很确定这是因为它被保留在某个地方,但我不知道在哪里(检查应该为 0 的 retainCount 返回 1)。我已经多次浏览了我的代码,但没有看到我没有发布的保留它的内容。甚至可能是我正在使用的框架中的错误。

你会如何处理这样的事情?我想也许你可以搜索内存并查看指向该对象的内容,从而更容易弄清楚为什么会这样,但我不太确定如何实现这一点。也许另一种解决方案?

0 投票
1 回答
2328 浏览

iphone - iPhone - removeFromSuperview 时释放子视图 UIViewController

我的主 UIViewController(主菜单)上有几个按钮,用于在主菜单顶部创建和添加子视图 UIViewController。当我删除子视图时,不会释放该控制器的内存。如何立即释放该子视图内存?

有人有例子吗?这将解决我所有的问题!提前致谢。

这是我添加子视图的方法