草庐IT

ios - 使用 Xcode Instruments 查看指针处的非僵尸对象历史记录

我目前正在使用Instruments调试“发送到已释放对象的消息”错误。我能够通过“ZombieMessaged”对话框访问故障对象的历史记录。我想在运行时找到一个类似的对象,它被正确分配/解除分配并且没有失败,并检查该对象的历史以比较调用树的样子。有什么办法吗?我可以打印我想检查的对象的指针位置,但是我有什么方法可以使用指针位置信息访问Instruments中该对象的历史记录吗?使用NSKeyedUnarchiver加载的对象似乎由于解码时的过度释放问题而失败,而不以这种方式创建的对象是可以的。 最佳答案 您可以使用instrum

ios - 为 NSObjects 删除或加密内存

我想弄清楚是否有一种通用方法可以从根本上删除或加密与NSObjects关联的内存。我真的不在乎它是否有点麻烦,我只是想确保它真的无法阅读。例如,如果我有一个NSString*str=[[NSStringalloc]initWithFormat:@"TESTING"];做起来比较简单unsignedchar*strPtr=(unsignedchar*)CFStringGetCStringPtr((CFStringRef)str,CFStringGetSystemEncoding());memset(strPtr,0,[strlength]);我可以为NSData做类似的事情。但我真的很想

ios - 使用文件管理器迭代目录占用大量内存

我正在使用NSFileManager的enumeratorAtPath方法来计算特定目录下的文件大小。NSString*iterDir=@"/path/to/dir/";NSFileManager*fm=[[NSFileManageralloc]init];NSDirectoryEnumerator*dirEnum=[fmenumeratorAtPath:iterDir];NSString*file;BOOLisDir;longlongfileSize=0;while(file=[dirEnumnextObject]){@autoreleasepool{file=[iterDirstr

ios - 圆弧 : find memory leak calling drawInRect through a block

我是Instruments的新手,但我之前已经成功地找到了漏洞。这一次,不是这样——每次我调用这段代码时都会有34MB的泄漏!我试图在下面发布所有相关代码,同时删除DDLogging等内容......首先,显示问题的Instruments屏幕截图。请注意,我尝试模拟内存警告并等待一段时间,但没有任何变化——此内存已被永久占用。PhotoManager.m:-(void)saveImage:(UIImage*)unimagecompletionBlock:(void(^)(BOOLsuccess,NSError*error))completionBlock{__weaktypeof(se

iphone - NSManagedObjectContext executeFetchRequest 返回不稳定的对象,导致 EXC_BAD_ACCESS、SIGABRT 等

我的猜测是我在这里缺少对核心数据的一些基本理解,但是这里是:我的应用程序中有多个提取请求来处理不同事物的检索。在某些情况下,代码运行良好,返回请求的对象。在某些情况下,它会返回似乎已经释放的对象(例如,稍后尝试引用返回结果的几行代码会给出EXC_BAD_ACCESS)。当我在代码中设置各种断点和日志语句并单步执行时,偶尔也会在代码的其他位置出现SIGABRT或EXC_BAD_ACCESS。在每种情况下,似乎都是在我去引用获取请求的结果时。这是一个这样的获取请求的示例://WhoamI?NSUserDefaults*defaults=[NSUserDefaultsstandardUser

ios - 为什么这个 for 循环会耗尽内存?

我正在为我的iOS项目使用ARC,并使用名为SSKeychain的库来访问/保存项目到钥匙串(keychain)。我希望我的应用程序在峰值负载时每10秒左右访问一次钥匙串(keychain)项(以访问API安全token),因此我想测试这个库以了解它在频繁调用时如何处理。我做了这个循环来模拟大量的调用,并注意到它在iPhone(不是模拟器)上运行时会消耗大量(~75mb)内存:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{d

ios - UIImageView动画太耗内存

我在制作动画时遇到内存和图像问题。首先,我正在使用ARC。在我的初始屏幕上,我有大约60张要制作动画的图像。我将这段代码用于动画:NSMutableArray*images=[[NSMutableArrayalloc]init];intanimationImageCount=61;for(inti=1;i问题是内存消耗大约是300MB,当然它在iPhone4上崩溃。当我注释掉那部分代码时,内存消耗大约是40MB,没关系。我试过将image属性设置为nil什么也没有。我试图将它放在@autoreleasepool{}中,但它不会释放它的内容。您知道如何优化它吗?

iphone - 如何修复错误 'No memory available to program now: unsafe to call malloc'?

如何调试和修复此错误Nomemoryavailabletoprogramnow:unsafetocallmalloc分析器未显示任何原因。 最佳答案 使用仪器检查由于保留但未泄漏的内存而导致的泄漏和内存丢失。后者是仍指向的未使用内存。在Instruments的分配工具中使用Heapshot。有关如何使用Heapshot查找内存泄漏的信息,请参阅:bbumblog基本上,方法是运行Instruments分配工具,进行堆快照,运行代码的直觉和另一个堆快照,重复3或4次。这将指示在迭代期间分配和未释放的内存。要弄清楚结果,请查看个人分配。

ios - 跟踪分配/内存使用情况并逐步执行 XCode 中的代码?

我的应用正在下载base64编码的内容,在大多数情况下是PDF文档。它通过Web服务传输并封装在SOAP中。文档的大小可达100MB。要在本地存储这些文件,我需要将它们从SOAP信封中提取出来,解码base64字符串并写入存储。问题是,大约1MB的文档会使临时内存使用量增加20-30MB。在Instruments中跟踪分配时,我可以看到那些峰值。这不是什么大问题。但是60MB的文档会增加大约800MB的内存,这对于iOS设备来说肯定太多了。我正在尝试更改应用程序以防止或至少降低峰值。las,我不完全知道是哪几行代码负责。是否可以单步执行代码并同时查看当前分配或内存使用情况?我知道当应用

ios - 'NSData dataWithContentsOfURL :' memory leak iOS 9. x?

我的代码如下:-(void)viewDidLoad{[superviewDidLoad];NSString*theURLString=@"http://website.com/musicFile";NSData*theData=[NSDatadataWithContentsOfURL:[NSURLURLWithString:theURLString]];}没什么特别的。我什至没有使用后台线程。这是我在iOS8.x上获得的行为(以及我期望获得的行为):因此,NSData被完全释放,所有占用的内存都回来了。然而,iOS9.x让我大吃一惊:我的问题是:大约100MB在iOS9.x中被白白浪费