相关疑难解决方法(0)

ios app最大内存预算

我正在开发一款至少以3g为目标的ios游戏.我们正在将高清资产用于视网膜显示设备(iphone 4,ipod touch 4th gen).

记忆方面,Ipod Touch 4th gen似乎是我们最受约束的设备,因为它具有与3gs相同的RAM(256与Iphone 4的512相比),但我们正在使用HD资产.该应用程序曾经在尝试加载100-110mb的ram时崩溃,但现在我们已经降到70MB,我们从来没有加载崩溃.

经过大量的搜索后,似乎没有官方的硬限制,那么我们应该如何知道要使用什么内存预算才能安全?我们希望能够为艺术家提供他们可以使用的预算,而不必担心每张地图的内存问题.

memory iphone memory-management ios

148
推荐指数
7
解决办法
9万
查看次数

如何实现didReceiveMemoryWarning?

我开发了一个简单的位置感知iPhone应用程序,除了在手机的低内存条件下,它在功能上非常符合我们的期望.

在手机内存不足的情况下我的应用程序崩溃了.如果我通过释放一些空间来增加手机内存,它会再次开始正常工作而不会发生任何崩溃.

当我在搜索问题时,我发现在低内存条件下操作系统会将didReceiveMemoryWarning发送到当前层次结构中的所有控制器,这样每个控制器都应该实现didReceiveMemoryWarning方法,并将iboutlet设置为nil.目前不可见.

我还读过一些地方,如果该控制器的视图不可见,将调用带有nil参数的方法setView,如果有一些附加到视图的出口变量,则删除它们会有问题.

因此,对于所有这些基金,通过实现didReceiveMemoryWarningviewDidUnload方法处理Iphone引发的低级内存条件是最好的 .

如果可能,请提供适当的示例或链接以解决上述问题.

谢谢.

iphone memory-management

49
推荐指数
4
解决办法
4万
查看次数

UIViewController在ARC环境中的didReceiveMemoryWarning

我正在评估切换到ARC(自动引用计数)和重构以应用于我的代码.在我必须弄清楚的事情中,有这样的:

如果ARC不允许显式释放对象,我该怎么办didReceiveMemoryWarning?目前,我使用该方法释放属于我的控制器的对象,并且可以通过惰性getter轻松检索:

- (void)didReceiveMemoryWarning {
    [_foo release]; _foo = nil;
    [super didReceiveMemoryWarning];
}
Run Code Online (Sandbox Code Playgroud)

和相对懒惰的吸气剂:

- (Foo *)foo {
    if (_foo) {
        return _foo;
    }
    return (_foo = [[Foo alloc] init]);
}
Run Code Online (Sandbox Code Playgroud)

在ARC中实现这样的"模式"似乎是不可能的...所以,我该怎么办?在ARC中,didReceiveMemoryWarning应被视为"已弃用"/无用吗?

cocoa-touch objective-c uikit automatic-ref-counting

12
推荐指数
1
解决办法
3863
查看次数

iPhone开发 - 模拟内存警告

背景:

我有一个标签栏应用程序.每个选项卡都包含导航控制器,允许用户从一个视图转换到另一个视图,显示数据的向下钻取信息(每个视图由视图控制器处理,每个视图控制器类都有didReceiveMemoryWarning方法).通过从Web服务中提取数据来填充列表.

问题:

当我使用iPhone模拟器的"硬件>模拟内存警告"选项时,didReceiveMemoryWarning将为所有视图控制器调用该方法 - 即使是用户正在查看的控制器.我不想清除活动视图控制器正在使用的任何内容.我怎样才能做到这一点?

由于内存警告,在数据发布后,哪种方法应该重新加载数据?(我看到viewDidLoad当用户返回到该视图时,包含表视图调用方法的视图控制器类,但如果视图包含(比如UIWebView),viewDidLoad则不调用方法.为什么会这样?)

编辑(2009年1月30日星期五 - 03:10 PM)

(注意:我正在使用"界面"构建器来创建视图,并且loadView方法已被注释掉.)

因此,当视图控制器收到内存警告消息时,这些是执行的步骤:

  1. 以下方法称为:

    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning]; 
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 由于调用[super didReceiveMemoryWarning],[self setView:nil]自动调用?

  3. 如果应清除任何资源,setView则应覆盖方法以清除本地资源.

  4. [self setView:nil]如果视图当前处于活动状态,则不会调用(默认情况下).对? - 我真的很好奇哪种方法可以做出这个决定以及如何做出决定?

可以请你确认一下.另外,我在这种方法myObject = nil后遇到错误,但myObjectdealloc控制器类的方法中释放后添加修复了问题.谢谢.

memory iphone warnings simulator

5
推荐指数
2
解决办法
2万
查看次数