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

iphone - UINavigationController 和 UIViewController 解除分配

我最近更改了我的应用程序以使用 UINavigationController,我之前使用的是 UINavigationBar,添加了级联子视图,这有点脆弱。

我面临内存使用问题。泄漏工具没有显示任何泄漏,但我创建并添加到 UINavigationController 的 ViewController 似乎从未被释放。因此,每次我创建一个新的 VC 然后按下 NavigationController 的后退按钮时,内存使用量都会增加。

我只是这样创建和添加我的 VC:

该应用程序从不通过 ViewController 的deallocviewDidUnload方法。每次我按下后退按钮时不应该调用这些吗?

我搜索了很多教程并阅读了 Apple 的内存管理,但是在使用 NavigationController 时,VC 在内存中的生命周期一无所获。

0 投票
4 回答
3472 浏览

iphone - Objective-C:在释放父对象之前是否必须释放属性对象?

假设我有一个名为“foo”的对象,另一个名为“bar”的对象作为属性。

当“foo”解除分配时,它会自动删除对“bar”的所有引用,以便“bar”也解除分配吗?或者“foo”会被释放,“bar”会漂浮在内存中的某个地方吗?即使所有“bar”的引用都在“foo”中定义。

提前致谢。

0 投票
4 回答
5714 浏览

iphone - ASIHTTPRequest dealloc 和 EXC_BAD_ACCESS 问题

我正在使用一组 ASIHTTPRequest 包装器 (AsyncImageLoader) 来下载 UITableView 中单元格的图像。

我在处理 ASIHTTPRequests 生命周期时遇到问题。如果我释放它们,如果我在他们尝试加载图像时继续上下滚动,我最终会得到 EXC_BAD_ACCESS。

这是我的包装器的样子。self.request具有保留属性,targetCell是我要放入图像的单元格:

loadImageFromURLcellForRowAtIndexPathindexPath.row % 6一个 AsyncImageLoader 调用,所以如果我继续向上和向下滚动,它会用同一个对象一次又一次地调用,取消请求,因为它们还没有结束。

但我最终总是有一个 EXC_BAD_ACCESS。根据调用堆栈,它发生在 ASIHTTPRequest 中markAsFinished,由 in 调用failWithError,由[self.request cancel]in调用loadImageFromURL:。大多数时候 ASIHTTPRequest 已经发布(我在它的 dealloc 中添加了一个 NSLog),但我不明白这是怎么可能的,因为 ASIHTTPRequest 似乎抛出了保留,因此在取消时它不会被释放。

如果我在委托方法中删除,我没有任何 EXC_BAD_ACCESS self.request = nil,但是由于 ASIHTTPRequests 在没有释放的情况下继续创建,它们最终根本不起作用。

有人可以告诉我我做错了什么吗?

0 投票
2 回答
203 浏览

objective-c - 除了释放内存之外,-dealloc 是否应该做任何其他事情?

我在工作中继承了一个 iPhone 应用程序,而且我是 Objective-C 的新手,所以我还没有掌握我的方向。我遇到了类似这样的代码:

我知道这在其他语言中是不受欢迎的。看着那段代码,我的蜘蛛感觉快疯了。

这是一个常见的 Objective-C 习惯用法吗?还是我有一个糟糕的代码库要修复?

0 投票
2 回答
391 浏览

iphone - iphone释放dealloc

我希望最好地了解 dealloc 和 release 函数之间的区别.. 示例... 我的类从 NSObject calle MyClass 在我的代码中派生,要使用这个类,我创建了一个 MyClass 的实例。

是正确的??和dealloc???需要按顺序使用还是一个覆盖另一个?

0 投票
4 回答
2794 浏览

iphone - 在自定义 UIViewController 上调用 [super dealloc] 时的 iPhone EXC_BAD_ACCESS

我不知所措!这是只在特定条件下发生的那些讨厌的错误之一,但我无法直接将条件和结果联系起来。

我的应用程序有一个分页的 UIScrollView,其中每个页面的视图都来自一个 MyViewController,它是 UITableViewController 的一个子类。为了最大限度地减少内存使用,我卸载了那些当前不可见的控制器。这是我的“清洁”方法:

正是这一行使应用程序崩溃:

viewControllers 是一个包含 MyViewController 类型对象的 NSMutableArray。MyViewController 没有自定义属性,它的 dealloc 方法只包含一个 [super dealloc] 调用。

这是调试器显示的内容: alt text http://a.imageshack.us/img831/3610/screenshot20100806at126.png

问题是每次清除控制器时都不会发生这种情况,而只是有时会发生。具体来说,在某些更改触发完全清理和重新绘制 ScrollView 之后,它会很好地显示当前页面(称为 X),但是一旦我滚动到足以导致清理 X 的位置,就会发生这种崩溃。快把我逼疯了!

另一件事,这不会发生在 4.0 模拟器中,也不会发生在 iPad 上,但在运行 3.1.3 的第一代 iPod touch 上会非常一致地发生。

0 投票
2 回答
339 浏览

ipad - 使用导航控制器弹出视图控制器时释放内存的问题

我有以下问题。当我按下后退按钮弹出视图控制器时,不会调用 dealloc 方法。

这是我正在使用的代码:

我在控制台上收到这些消息:

我第一次推送视图:

第二次:

我还有一条关于 dealloc 方法的 NSLog 消息没有显示。但是我注意到,如果我在另一个之后强制另一个 [coleccionVista 版本],则会显示 dealloc 消息,但在尝试 [super dealloc] 时会崩溃。我没有任何其他 coleccionViewController 的引用(我一直在代码中搜索,该方法的所有用法都在我向您展示的代码中)。

任何的想法?提前致谢!

0 投票
4 回答
2819 浏览

ios - 在 iOS App 中发布定制的 NSObject 类

我有一个作为 NSObject 创建的类。此类具有许多不同类型和方法等的属性。

当我在我的应用程序中实例化这个类时(比如在主视图控制器中),当我使用完它时,我会立即向它发送一个发布调用。IE:

所以我的问题是:当我释放 myObject 时,它会自动释放我在 MyObject .h 文件中声明的所有声明的对象、变量等吗?

或者

我是否需要创建一个自定义发布方法来发布所有这些?

我问是因为内存管理问题。

谢谢你。

0 投票
3 回答
1150 浏览

iphone - 调用 NSOperationQueue 和 dealloc 并导致 App 崩溃的问题

我在队列中创建了一个 NSOperation,如下所示:

这工作正常,但如果视图在操作完成之前弹出应用程序崩溃“EXC_BAD_ACCESS”

我试图通过调用 cancelAllOperations 来取消操作队列,但由于它已经在进行中,它不会阻止应用程序崩溃。docos 说,如果操作正在运行,则由操作来检测它是否已被取消并做出适当的响应,但不太确定我将如何实现它?

有任何想法吗?

0 投票
1 回答
1180 浏览

iphone - 何时释放从 superview 中移除的 UIView

我正在创建一个加载屏幕 UIView,它被添加到子视图中,同时从某个 URL 解析一些 XML。一旦返回 XML,加载屏幕就会从其父视图中移除。

我的问题是我应该如何释放这个对象?

在下面的代码中,您会看到我发送removeFromSuperview到 loadingScreen,但除非我释放它,否则我仍然拥有该对象的所有权。但是,如果我释放它,在viewdidUnloadand中将没有任何东西可以释放dealloc