问题标签 [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 回答
2933 浏览

iphone - 在 -(void)dealloc 中同步 NSUserDefaults 是不是很糟糕?

我在对象的 init 方法中从 NSUserDefaults 加载。我可以在对象的 dealloc 方法中保存到 NSUserDefaults 吗?

完全像:

好,坏,好吗?如果不好,哪里会更好。

编辑:

感谢您的详细回复。所有这些都是有道理的。我发现为什么这是保存用户默认值的不好地方的另一个原因是,只有在对象很好地解除分配时才会调用 dealloc。如果我的应用程序被杀死,此代码将永远不会运行。同样,如果应用程序被推送到后台(iOS 4),它不会运行。我还删除了显式[userDefaults synchronize]调用。这让我有点紧张,但我把我的信任放在了苹果上。:)

0 投票
3 回答
316 浏览

c++ - 在 C++ 中处理字符(没有 std::string)

我有这个代码:

第二个值将获得值的地址好吗?如果我删除“值”,那么 secondValue 将不可用,对吗?

所以我应该这样做:

所以如果我删除“值”没问题。

最后解除我应该做的 secondValue :

我对吗?

0 投票
3 回答
357 浏览

iphone - 当应用程序进入后台时如何正确释放对象?

只有一个问题“当应用程序进入后台时如何正确释放对象?”。我正在开发一些应用程序,一切正常。当我将应用程序置于后台然后再次启动时,它会崩溃。不是立即(应用程序在我关闭它的地方加注星号),而是当我选择一些单元格或只是滚动表格视图时。所以我很确定应用程序调用已经发布的数据。

这是dealloc的示例

有什么建议吗?

0 投票
1 回答
1086 浏览

iphone - CFString isNaturallyRTL - 发送到已释放实例的消息

我已经用 0 个结果搜索了“CFString isNaturallyRTL”。

这些是我的课:

现在,我有一个在按钮触摸时打开的视图,其中包含两个文本框和一个按钮。像这样。

一切正常,编译运行。

我第一次单击 drawRouteTextboxes 时,它会打开我的视图并设置默认文本(“Roma”和“lecce”)。第二次,我打开视图,编辑文本字段并调用 drawRoute。没关系。我第三次调用 drawRouteTextboxes 它返回我这个运行时错误:

我不知道问题出在哪里......有人知道解决方案吗?这是我第一次看到这个错误!

谢谢,阿尔贝托。

0 投票
2 回答
3124 浏览

objective-c - Objective-C 释放在类别中声明的属性?

我在现有类上有一个类别,它向该类添加了一个属性和一些方法。

在实现文件中,我想在对象被释放时释放这个属性。但是,如果我dealloc在这个类中声明,它将根据我的理解覆盖原始类中的 dealloc。那么aProperty当对象被释放时释放它的正确方法是什么?

0 投票
1 回答
8048 浏览

uiview - UIViewController & UIview dealloc 没有被调用

我有一个基于导航的视图控制器,在视图控制器中我隐藏了顶部导航栏并使用自定义 UIView 作为导航栏。

UIView 栏有一个后退按钮,当后退按钮被预置时,我使用委托方法(我已经声明了一个协议)与视图控制器进行通信。

我在我的 CustomNavigation Bar id 委托中使用委托;

并在主视图控制器中,当我分配导航栏时,我设置了委托

我在 ViewControllers dealloc 中释放了这个 Bar。

现在,当我按下后退按钮时,我使用委托方法在主 ViewController 中调用 popViewController。

现在 ViewController 被弹出并且控制转到前一个 viewController 但在 ViewController 和 UIView 中都没有触发 dealloc

我究竟做错了什么?

0 投票
2 回答
6473 浏览

iphone - 正确[超级释放]

dealloc 方法中语句的顺序是否重要?是否[super dealloc]需要在方法的顶部?有关系吗?

也在例如viewDidLoad。应该[super viewDidLoad]在方法的顶部?

0 投票
3 回答
1461 浏览

iphone - dealloc 中的自定义 UIButton 内存管理

我希望澄清这里正在进行的过程。

我创建了一个 UIButton 的子类,它的 init 方法如下所示:

在我的视图控制器中,我正在创建这些按钮之一并将其添加为子视图:

在视图控制器的dealloc方法中,我记录了按钮的保留计数:

我理解它的方式, myButton 实际上并没有保留,即使我使用 调用它alloc,因为在我的子类中我创建了一个自动释放按钮(使用buttonWithType:)。

dealloc中,这是否意味着,当调用 dealloc 时,superview 释放按钮并且其保留计数下降到 1?该按钮尚未自动释放?

或者我是否需要在调用 [super dealloc] 后将保留计数减为零?

干杯。

0 投票
3 回答
5432 浏览

iphone - iOS SDK - dealloc 实现 - 先释放子视图?

我正在完成一个 iPad 应用程序,对我来说,这意味着填写dealloc我的课程中的所有方法。

我的 nib 中有很多视图,其中大部分都包含子视图(即UIViews、UILabels 等)。我应该在释放父视图之前释放子视图吗?如果父视图被释放,它的子视图是否也会被释放?

样本:

两者childViewparentView都是我的视图控制器的属性。两者都被保留了。

0 投票
2 回答
2400 浏览

objective-c - 在 Objective-C 对象中使用 malloc/free

我有一个类型AudioManager为成员的类AudioBufferList *。(这是在框架中声明的结构CoreAudio)。由于AudioBufferListis not a NSObject,我无法保留它,所以我必须分配/释放它(如果我错了,请纠正我)。

我的问题是,释放它的“正确”地方在哪里?目前我正在dealloc使用AudioManager. release如果我理解正确,一旦将消息发送到 --- 的实例,就会自动调用此方法,这AudioManager是真的吗?关于在 Objective-C 对象的非对象成员上使用 alloc/free 是否有任何其他推荐的做法?

编辑:

从苹果文档:

子类必须实现它们自己的 dealloc 版本,以允许释放对象消耗的任何额外内存——例如为数据或对象实例变量动态分配的存储被释放对象所拥有。在执行特定于类的释放后,子类方法应该通过向 super 发送消息来合并超类版本的 dealloc:

这使事情变得更加清晰 - 但更多的见解值得赞赏。