Instruments(泄漏)和 NSDateFormatter

2023-12-14

当我使用 Instruments Leaks 运行我的 iPhone 应用程序并使用 NSDateFormatter 解析一堆 NSDate 时,我的内存会增加约 1mb 并保持不变,即使这些 NSDates 在解析后应该被释放(如果它们不是新的,我只是丢弃它们)。

我认为 malloc (在下面最重的堆栈跟踪中)可以成为 NSDate 的一部分,但我也认为它可能是仅在解析的某些中间步骤中使用的内存。有谁知道它是哪一个或如何找到?

另外,有没有办法在 NSDate dealloc 上设置断点来查看该内存是否真的被回收了?

这是我的日期格式化程序用于解析这些日期的样子:

df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"EEE, d MMM yyyy H:m:s z"];

这是当内存增加并停留在那里时最重的堆栈跟踪:

   0 libSystem.B.dylib  208.80 Kb     malloc
   1 libicucore.A.dylib  868.19 Kb     icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
   2 libicucore.A.dylib  868.66 Kb     icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
   3 libicucore.A.dylib  868.67 Kb     icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
   4 libicucore.A.dylib  868.67 Kb     icu::DateFormatSymbols::initZoneStringFormat()
   5 libicucore.A.dylib  868.67 Kb     icu::DateFormatSymbols::getZoneStringFormat() const
   6 libicucore.A.dylib  868.67 Kb     icu::SimpleDateFormat::subParse(icu::UnicodeString const&, int&, unsigned short, int, signed char, signed char, signed char*, icu::Calendar&) const
   7 libicucore.A.dylib  868.67 Kb     icu::SimpleDateFormat::parse(icu::UnicodeString const&, icu::Calendar&, icu::ParsePosition&) const
   8 libicucore.A.dylib  868.67 Kb     icu::DateFormat::parse(icu::UnicodeString const&, icu::ParsePosition&) const
   9 libicucore.A.dylib  868.67 Kb     udat_parse
  10 CoreFoundation  868.67 Kb     CFDateFormatterGetAbsoluteTimeFromString
  11 CoreFoundation  868.67 Kb     CFDateFormatterCreateDateFromString
  12 Foundation  868.67 Kb     -[NSDateFormatter getObjectValue:forString:range:error:]
  13 Foundation  868.75 Kb     -[NSDateFormatter getObjectValue:forString:errorDescription:]
  14 Foundation  868.75 Kb     -[NSDateFormatter dateFromString:]

Thanks!


[df setDateFormat:@"EEE, d MMM yyyy H:m:s z"]; // Remove the `z`

当使用 z 选项时,在一次调用“dateFromString”后,将在 iPhone OS 2.2.1 或 3.1.2(更多)上永久分配 868 Kb。

包含源代码和日志文件的完整文章可以在以下位置阅读:http://thegothicparty.com/dev/article/nsdateformatter-memory-leak/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Instruments(泄漏)和 NSDateFormatter 的相关文章

  • 在 UIViewController 上添加 UIView

    我想在 uiviewcontroller 上添加一个 自定义 uiview 这个自定义视图是我用 xib 创建的 它与视图控制器分开 有谁知道如何将带有 xib 的 uiview 添加到 uiviewcontroller 中 提前谢谢了 您
  • iOS - 单元测试异步代码

    我试图测试的方法部分如下 void configureTableFooterView dispatch async dispatch get main queue self tableView tableFooterView nil if
  • UIImage initWithContentsOfFile 不起作用

    我有问题 我想避免 UIImage imageNamed 所以我做了 UIImage prodImg UIImage alloc initWithContentsOfFile myimage png controller productIm
  • 如何获取未知大小 NSArray 的前 X 个元素?

    在 ObjectiveC 中我有一个 NSArray 我们称之为NSArray largeArray 我想要一个新的NSArray smallArray仅包含前 x 个对象 或者如果largeArray 的大小已经 这种方法 NSArray
  • 正确地从 NSString 创建图像

    我正在从字符串变量创建图像 以下是创建图像的代码片段 UIImage imageFromText NSString text FontName UIFont font set the font type and size UIFont fo
  • 没有这样的模块“Ensembles”错误 - 导入 Objective-C 框架以在 swift 项目中使用

    我将 Ensembles 添加到我的 Swift 项目 在这里找到https github com drewmccormack ensembles https github com drewmccormack ensembles 我没能在我
  • 如何从 Swift 调用 Objective-C 代码?

    在 Swift 中 如何调用 Objective C 代码 Apple 提到它们可以在一个应用程序中共存 但这是否意味着在技术上可以重用 Objective C 中创建的旧类 同时在 Swift 中构建新类 在 Swift 中使用 Obje
  • Objective-C 实现文件中方法名后面的分号

    void designImageViewNow some code here 分号写法正确吗 就在实现文件 Objective C 中方法名称之后 正文括号之前 这行得通吗 当我正在开发 iPhone 应用程序时 我错误地将分号放在了一个自
  • 循环缓冲区录音 iOS:可能吗?

    我的一个客户想要连续录制音频 当他单击 提交 时 他只想提交最后 10 秒的内容 所以他想要连续记录并且只保留最后 x 秒 我认为这需要类似循环缓冲区的东西 但是 作为 iOS 的新手 它看起来像AVAudioRecorder只能写入文件
  • iPhone UITableView 分页结果

    对从服务器拉取的大量结果进行分页的最佳方法是什么 就服务器而言 我可以抵消和限制结果 因此我一次只能提取 25 个结果 但是允许用户查看更多结果而不需要像应用商店一样不断向下滚动不断增长的列表的最佳方式是什么应用程序 谢谢 豪伊 要在列表底
  • Valgrind 中零字节丢失

    当 Valgrind 报告 o 字节丢失时 这意味着什么 如下所示 27752 0 bytes in 1 blocks are definitely lost in loss record 2 of 1 532 我怀疑这只是创造性使用的产物
  • UIAlertController 在 iOS 9 中不工作

    I have added the UIAlertController code showing login and password textfields it works for iOS 8 but in iOS 9 not works
  • 在 UITableView 上显示徽章信息

    我希望在 UITableView 行上显示徽章信息 如下图所示 我尝试使用下面的代码 UILabel labelCell1 UILabel alloc init labelCell1 frame CGRectMake 160 9f 10 0
  • 当用户到达 UITableView 的最后一行时,如何动态添加行?

    我有一个UITableview当前显示 10 行 固定为静态 现在我想在其中添加一个功能 当用户到达最后一行时 我想向表中添加更多 10 行UITableView 我的意思是目前我在应用程序中显示固定的 10 行 但现在我想在用户到达上一个
  • NSHTTPCookieStorage 是否跨应用程序持续存在?

    所以我只是好奇 NSHTTPCookieStorage 是否跨应用程序持久存在 或者仅在当前应用程序本地 我希望在另一个应用程序中收集的一些 cookie 可以在搜索应用程序中访问 是这样的吗 谢谢 PS 这是在 iPhone 或 iPad
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • iPhone iOS 保存从 UIImageJPEGRepresentation() 获得的数据第二次失败:ImageIO: CGImageRead_mapData 'open' failed

    我的 UIImage 操作遇到了一个奇怪的问题 我正在进行保管箱同步 并且必须将我的图像存储为本地文件 为此 我使用以下命令保存它们UIImagePNGRepresentation image or UIImageJPEGRepresent
  • iPhone 相当于 Application.DoEvents();

    iPHone 我们使用 MonoTouch 但 Obj C 答案还可以 我的单例域对象需要一段时间才能获取所有数据 因此它在线程中内部运行部分获取数据 我需要通知 UI 域已完成 目前我正在这样做 有没有更好的办法 在 WinForms 中
  • 滑动删除不起作用

    滑动删除功能在我的表格视图中不起作用 我已经在导航栏中实现了 commitEditingStyle 委托和编辑按钮 因此 当用户单击编辑按钮时 删除和添加按钮会相应显示 但是 在滑动时 删除按钮不会出现 并且似乎它无法将滑动识别为对 set
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件

随机推荐