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

iphone - iPhone - 多个 UIViewControllers 发布

我的主要 UIViewController (PMGameViewController.h) 是我的应用程序委托调用的文件。

我的主 UIViewController (PMGameViewController.m) 上有几个按钮。当按下按钮时,我执行 insertSuvbiew 并在顶部附加另一个 UIViewController。迷你游戏结束后,我只需执行 removeFromSubview。这将删除我在顶部插入的 UIViewController 并向我显示主菜单。完美这是我想要的,但是...

在我执行 removeFromSubview 之后,objectalloc 不会下降。如何释放 UIViewController 的内存。我不知道有一种方法可以反向引用我的主 UIViewController (PMGameViewController.m) 来告诉它它已被删除并释放 UIViewController 内存。

这是我插入子视图的方法

0 投票
5 回答
13302 浏览

iphone - iPhone - dealloc - Release vs. nil

想知道有经验的人是否可以解释一下。我见过的例子...

....在(void)dealloc中。

有什么区别,一个比另一个更好?什么是最好的方法?

在进行 retainCount 测试时,我个人看到 nil 将计数从 3 降至 0,但 release 仅将其从 3 降至 2。

0 投票
2 回答
5439 浏览

iphone - 具有多个视图/子视图的 iphone 应用程序:内存没有被释放

我有一个 iPhone 应用程序,它根据此链接中解释的框架在框架中加载连续视图(基本上是一个使用方法ViewController加载/删除其他视图的主视图displayView)。在我的应用程序中,我使用的是笔尖(示例链接使用编码视图),所以我的每个ViewControllers都有其随附的笔尖。

在 Instruments 中调试显示没有泄漏,但如果我进入/离开一个部分(带有 View.xib 的 ViewController),笔尖仍保留在内存中,因此在一些输入/输出内存开始累积之后。

我知道笔尖没有被卸载,因为一个笔尖几乎是通过编程创建的(IB 中没有东西),而另一个笔尖确实有在 IB 中创建的图像和按钮。首先加载大的,然后加载小的。您会期望在 Instruments 中的分配减少。

我怎样才能防止这种情况?

我的结构如下,下面有一些评论:

此控制器处理子视图加载/删除:

我有尽可能多case的“细节” ViewControllers(现在我有 3 个case,但会增长到 10 个或更多)。这种结构的目的是轻松地从应用程序的一个“部分”移动到另一个(NavBar 控制器或 TabBar 控制器不适合我的特定需求)。

注意NSLogin dealloc。这被调用了(我可以在控制台中看到它),但笔尖所需的内存没有被释放(仪器显示离开一个部分时内存分配增加,因为加载了一个新的笔尖)。

任何帮助将不胜感激。我已经尝试了一百万种不同的东西,但我无法卸下笔尖。

0 投票
2 回答
3592 浏览

objective-c - Objective C - 你在哪里释放全局静态变量?

或者,+(void)initialize 的反义词是什么?

这是我的情况:

我有一个类 Unit,它的 -(id)initWithName: 函数从全局 NSDictionary 中获取数据,该 NSDictionary 是惰性创建的,在 Unit.m 文件中定义为:

静态 NSMutableDictionary *unitLibrary = nil;

我在哪里调用 [unitLibrary release]?

0 投票
5 回答
553 浏览

iphone - 找不到内存泄漏

大家好,我很难找到内存泄漏。当我解除分配它们时,我的所有保留计数 = 0,但我仍然从以下代码位中标记出泄漏:

}

在取消对等选择器时,如果您找不到任何人可以连接,我会运行此代码以摆脱与对等选择器有关的一切。

}

某处,代码泄漏,我无法弄清楚我的生活在哪里。对此的任何帮助将不胜感激。

0 投票
1 回答
1196 浏览

iphone - iPhone 内存管理:App 退出时无需清理和释放保留的对象?

以下是真的吗?

当应用程序即将退出时,无需对所有保留对象调用 release 来清理内存,因为 iPhone OS 会在您启动应用程序时回收它为应用程序分配的内存。这比依靠应用程序自行正确清理更快、更安全。您可以通过在应用程序委托的 dealloc 方法中放置一个 NSLog 调用(或调试器断点)并查看它从未被调用来验证这一点。

因此,在应用程序即将退出时清理内容是没有用的。此外,在操作系统清除您的应用程序之前,您的时间非常有限,因此不要将其浪费在清理东西上。专注于保存你的游戏和任何其他相关的东西。

来源 (cocos2d-iphone.org)

0 投票
1 回答
587 浏览

iphone - “交换”一个 UIView 实例变量 - 不能解除分配“上一个”视图

我想以某种方式组织我的 iPhone 游戏的关卡视图,但我根本做不到(不展开Object Allocations)。我为我的代码做了一个真正的“骨架”(这个游戏有 2 个级别,目标是发布 iPhone 显示器)。我只是无法释放上一个级别,因此仪器显示递增的 BGTangramLevel 实例。

请看一下,我需要一些有用的设计想法(我的第三个问题)。

视图控制器.h

视图控制器.m

BGTangramLevel.h

BGTangramLevel.m

所以我该怎么做?我尝试标记自动释放返回的级别实例,在 removeFromSuperview 之后释放 currentLevel,尝试以(非原子,分配)方式合成的 currentLevel 属性,但对象分配仍然增长。我可以避免通知吗?我被困住了。

0 投票
2 回答
1177 浏览

iphone - 多个 UIViews、dealloc 和 retain

我有一个小型应用程序,用于在 UIScroller 中以与 Photo 应用程序类似的方式显示多个 UIImageView。我有一个 TableView,当我选择一个项目时,它会解析照片的 XML 文档(添加到数组中)并添加一个 UIViewController 来显示图像。

问题是我有一个选项卡栏控制器,单击选项卡栏项目后,删除显示图像的视图并释放所有已用内存后,该控制器应返回 TableView。问题是我不知道如何实现这一目标。是否缺乏对记忆规则的理解我不知道。

这是我遇到问题的过程。

表视图控制器

这在 parserDidEndDocument: 之后调用。从标签栏项目调用 backToMenu。

相册视图控制器

这是一个包含 UIScroller 和 UIPageControl 的 UIViewController。它添加了几个 ImageViewController。

图像视图控制器

这有一种方法。它添加了一个名为 ImageView 的子类 UIView,用于处理添加 UIImageView。

backToMenu 函数应该删除/释放 AlbumViewController 并在所有子视图上调用 delloc 以释放已使用的内存。

哪里出错了?任何帮助,将不胜感激。

谢谢。

0 投票
3 回答
1885 浏览

iphone - UIScrollView 中的几个 UIImageViews 和崩溃

我编写的照片查看应用程序有问题。

我有一个内部带有 UINavigationController 的 UITabBarController。UINavigationController 最初显示一个 UITableView。在选择时,它会推送另一个 UIViewController(个人相册)以及 NSArray 照片。这个控制器包含一个 UIScrollView/UIPageControl,它显示了几个 UIViewControllers,其中有一个 UIImageView。

该应用程序最初运行良好。它为每个相册正确加载每个图像,您可以从导航栏返回。问题是在大约 180 张图像之后,应用程序开始抛出内存警告并最终崩溃并抛出“程序接收信号:“0”。警告:check_safe_call:无法恢复当前帧”,我认为这与内存不足有关。这非常令人沮丧,因为我已经检查过并且没有泄漏,并且每个 dealloc 都被调用了。dealloc 方法释放每个保留的属性并将它们设置为 nil。

如果您签入仪器,它会显示在查看每张专辑后内存使用量逐渐上升。它确实释放了一些内存,但不是全部。例如,如果专辑使用 1MB 来显示,则可能会释放 0.9MB。

任何帮助,将不胜感激。这是我发布它之前的最后一个问题。

编辑:这是基本项目文件的链接。http://www.mediafire.com/?nztrd1yhzoo

AlbumsViewController(推送一个单独的“albumviewcontroller”)

专辑视图控制器

图像视图控制器

0 投票
2 回答
342 浏览

objective-c - 这两种dealloc方法有什么区别吗?

所以我重写了 dealloc 方法,因为该对象是由另一个对象组成的复合对象。

我最初有这个 dealloc 方法:

看了书后,我看到了另一个答案:

只是想知道两者是否同样有效。

谢谢,

缺口