Tag: 内存pipe理

引用嵌套块中的弱自我

假设我已经创build了一个弱自我使用 __weak typeof(self) weakSelf = self; [self doABlockOperation:^{ … }]; 在那个块里面,如果我嵌套另一个块: [weakSelf doAnotherBlockOperation:^{ [weakSelf doSomething]; } 它会创build一个保留周期吗? 我是否需要为弱者创造另一个弱点? __weak typeof(self) weakerSelf = weakSelf; [weakSelf doAnotherBlockOperation:^{ [weakerSelf doSomething]; }

表视图图像永远不会被释放

我正在对我的一个应用程序进行重大更新,并试图减less内存使用量,使其更清洁,更快。 我使用的仪器来分析应用程序,我正在看UIImage的分配,我约10时,应用程序启动(虽然一个是一个状态栏图标?不知道为什么包括)。 当我打开我的设置视图控制器(这是在iPad的分割视图控制器)它基本上与每个表视图单元格,这是一个很大的图像。 首次展示它添加了42个图像。 当我解雇这个视图控制器时,仍然有52个图像,现在应该只有10个。 如果我再次出示控制器,现在有91个图像。 这不断上升。 仪器没有说有泄漏,我不知道发生了什么。 每个单元格设置一个图像 cell.imageView.image = [UIImage imageNamed:@"Help-Icon"]; 我怎样才能找出为什么这些图像没有被释放? 编辑:我认为它现在释放的图像。 我从设置imageView图像直接更改为setImage:所以现在一个表单元格看起来像这样: cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; } cell.textLabel.text = NSLocalizedString(@"Homepage", @"Homepage"); UIImage *cellImage = [UIImage imageNamed:@"Homepage-Icon"]; [cell.imageView setImage:cellImage]; [MLThemeManager customizeTableViewCell:cell]; return cell; MLThemeManager是一个使用主题类将单元格的属性设置为主题的单例,如文本标签颜色,突出显示颜色,详细文本标签颜色和背景颜色。

目标C – 分配,复制,保留

我是Objective C的新手。我拥有C语言的基本知识,包括指针的概念。 我有两个基本的问题: 有人可以用一些比喻来解释分配,复制和保留之间的区别吗? 如何处理返回指针variables的函数,以及如何通过返回指针执行消息传递?

如何在iOS中释放CGImageRef

我正在写这个方法来计算图像的平均R,G,B值。 以下方法将UIImage作为input,并返回包含input图像的R,G,B值的数组。 我有一个问题:如何/我在哪里正确地释放CGImageRef? -(NSArray *)getAverageRGBValuesFromImage:(UIImage *)image { CGImageRef rawImageRef = [image CGImage]; //This function returns the raw pixel values const UInt8 *rawPixelData = CFDataGetBytePtr(CGDataProviderCopyData(CGImageGetDataProvider(rawImageRef))); NSUInteger imageHeight = CGImageGetHeight(rawImageRef); NSUInteger imageWidth = CGImageGetWidth(rawImageRef); //Here I sort the R,G,B, values and get the average over the whole image int i = 0; unsigned int red = 0; […]

iOS 7 Sprite Kit释放内存

我正在构build一个针对新的iOS 7和Sprite Kit的iOS游戏,使用发射器节点和物理来增强游戏性。 在开发应用程序的时候,我遇到了一个严重的问题:创build你的场景,节点,效果,但是当你完成并且需要返回到主屏幕时,你如何释放这些资源分配的所有内存? 理想情况下,ARC应该释放一切,应用程序应该回到创build场景之前的内存消耗级别,但这不是发生的情况。 我添加了下面的代码,作为视图的dealloc方法,它绘制场景并负责在closures(删除)时删除所有内容: – (void) dealloc { if (scene != nil) { [scene setPaused:YES]; [scene removeAllActions]; [scene removeAllChildren]; scene = nil; [((SKView *)sceneView) presentScene:nil]; sceneView = nil; } } sceneView是一个UIView,它是场景的容器 场景是SKScene类的扩展,创build所有SKSpriteNode对象 我非常感谢在这个问题上的任何帮助。

仪器与iOS:为什么内存监视器不同意分配?

从乐器的屏幕截图中可以看出,Allocations认为我的应用程序(Ongo)只使用了7.55MB的内存,而Memory Monitor则使用了53.30。 此外,免费系统内存与应用程序正在使用的内存量几乎没有任何关联。 有谁知道为什么这两个工具之间有这么大的分歧? 另外,是否有可能find低系统内存的来源或如何防止这么快耗尽? 我的应用程序似乎没有泄漏内存,但不知何故,它耗尽了系统资源。 谢谢

确定iOS设备上可用的RAM数量

你可能已经看到了许多“系统信息”应用程序,其中显示的东西,如电池剩余时间,甚至像内存等系统信息。 以类似的方式,有没有办法从我的应用程序检索当前可用的RAM的数量,以便我可以做出更好的决定,何时最好转储或保留某些视图以避免内存警告?

泄漏仪器不显示时如何debugging内存泄漏?

我有一个用Swift编写的iOS应用程序正在泄漏内存 – 在某些情况下,应该释放一些对象,但它们不是。 我已经通过简单地添加deinitdebugging消息来了解这个问题: deinit { println("DEINIT: KeysProvider released") } 所以,在应该导致对象释放的事件之后,deinit消息应该出现在控制台中。 但是,对于一些应该发布的对象,则缺less该消息。 尽pipe如此,泄漏开发工具并没有显示任何泄漏。 我如何解决这种情况?