我最近在我的应用程序中遇到了一些内存管理问题。该应用程序利用了一些高质量的图像,这极大地增加了内存使用量。这里有一些关于项目的信息和图像细节,以使问题更清楚:我的项目中添加了大约90张图片。其中一半设计为@2x大小,以支持新iPad视网膜显示屏。因此每台设备的最大图像数量约为45张。所有图像的Retina版本总大小约为25兆字节(每个独立图像的大小从10KB到6.8MB不等)。同时,所有标准图像的大小等于11兆字节。项目的XCode存档大小为44MB。标准版图像中单张图像的最大分辨率约为1500x4000像素,最小分辨率约为60x60像素。Retina版图像的最大分辨率约为3000x8
我正在使用工具检查我的IOS应用程序的内存使用情况,发现CFString一直在分配和增长。在我的代码中创建NSString对象时,我使用了StringWithFormat方法,而不是[[NSStringalloc]init]之类的方法。我怎样才能阻止这个?下图是仪器输出的屏幕截图。如果缺少问题的必要信息,请告诉我。 最佳答案 如果您使用方便的构造函数创建大量临时对象,那么使用自定义自动释放池block是一个好习惯。由于使用便捷构造函数创建的对象是自动释放的,因此它们可能不会立即释放。这就是内存使用量激增的原因。来自Apple:Man
在InstrumentsDocumentation中,在谈到能源使用水平时,是这样说的:注意:iPhone3GS和第三代iPodtouch目前支持EnergyUsage仪器。我想这篇笔记只谈第3代,因为它是最新一代的,但我一直试图了解第4代iPodTouch的能源使用水平,但我还没有得到它(我在这个问题中问过这个问题:Instrumentsdoesn'tshowEnergyUsageLevel:itisempty)所以我认为也许这个注释目前也是正确的。我觉得Note说“INthirdgeneration”而不是“FROMthirdgeneration”很奇怪。所以问题是:第4代是否也显
我正在寻找有关如何使用Instruments的TimeProfiler来增强特定操作的建议。我有一个分页ScrollView,可以按需加载其内容。当滚动到一个新页面时,另一个页面将加载到右侧两页。当当前页面滚动50%的屏幕时会发生这种情况,并且在较慢的设备上,加载足以成为瓶颈,它会中断滚动的平滑度。卷轴感觉就像它在50%品脱时非常短暂地暂停,然后跳回Action。我应该注意到,我的应用程序没有网络组件,因此瓶颈不是在获取数据时出现的,而是在加载新View时出现的。在我努力改进这一点时,我需要对转换进行基准测试,以便评估我的增强效果。观看了WWDCsession后,我了解了时间分析器的基
Instruments(Leaks)在使用TWRequest时报告内存泄漏,我真的看不出我做错了什么。以下是重现问题的步骤:创建一个新的Xcode项目(禁用ARC),添加Twitter框架,然后将以下几行添加到代码中(例如在viewDidLoad中):TWRequest*postRequest=[[TWRequestalloc]initWithURL:[NSURLURLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"]parameters:nilrequestMethod:TWRequestMeth
我已经使用工具分配测试了我的应用程序并得到了这张图片:如图所示,我的应用程序正常工作,但它通常以总字节数计值吗?我担心“#Allocations(Net/Overall)”,因为它的颜色是红色。这是什么意思(红色) 最佳答案 红色是在您的应用程序的所有运行时期间进行和取消分配的总(总体)分配。紫色(红色上方的细条)是已分配但尚未解除分配的对象。我想说你不需要太担心它,特别是对于内部对象或Malloc,并确实关注更高级别的对象,如View和Controller。此外,如果您单击分配工具的i,您可以选择忽略CF(CoreFoundati
是否有任何方法可以使用Instruments和/或Xcode识别代码中导致丢帧的确切位置(例如长时间运行的函数或等待锁定)?我试图使我的ScrollView的滚动尽可能平滑,FPS有时会下降到59甚至58,而大约一半的时间保持在60,所以我想知道到底是什么造成这种情况。我确实在CoreAnimation模板的CPUUsage工具中启用了RecordWaitingThreads标志,它确实显示了针状每个核心的使用率不时达到100%的峰值(接近几秒丢帧),但我似乎无法找到一种方法来识别代码中导致丢帧的确切位置——所有函数都被调用影响很小,百分比只有一位数(因此这很可能是等待锁定的主线程)。
我使用Instruments运行我的应用程序,发现我的方法之一“[UICustomButtonloadButton..]”分配的计数一直在增加(见下面的屏幕截图)-每当我滚动tableview和单元格可见时,就会触发有问题的方法。我的问题是1)计数实际上意味着什么?持续增加正常吗?2)计数的增加是我的滚动变得越来越滞后的原因吗? 最佳答案 工具中的计数显示您的应用程序创建的给定类的实例数仍然存在。所以增加到你的应用程序已经创建了它需要的所有对象的点是正常的,然后它应该或多或少保持不变(或多或少是因为你可能一直在创建和释放对象)。如果
当我运行我的应用程序时,我正在尝试测量我的ipod的能源使用水平。我将数据从我的设备导入Instruments应用程序,能源使用水平显示一个条形图。但是,在Instruments的详细信息Pane中,能源使用水平不会显示任何数字,表明我设备中应用程序使用的能源水平。你知道如何获得这个能源使用水平吗?我按照仪器文档中所述的步骤从iOS设备获取能源使用报告;我的iOS设备是ipodtouch3G,我使用的是Xcode3.0。谢谢! 最佳答案 您必须先断开设备连接,测试您的应用,然后重新连接。在仪器中,选择->文件->从设备导入能量诊断反
我的iOS应用程序有10多种语言的本地化。我想检查所有屏幕是否正常(标签不会太长/太短等)。我知道我可以浏览我的应用并使用UIAutomation制作屏幕截图。有什么方法可以在UIAutomation中切换模拟器的语言?有什么方法可以通过启动1个命令来为我的应用程序生成屏幕截图吗?谢谢! 最佳答案 是的。事实上,我只是自己写的。:)使用这个项目:https://github.com/jonathanpenn/ui-screen-shooter它演示了如何从命令行运行UI自动化、使用plist更改命令交换模拟器语言以及使用AppleS