ios - 为什么 "[[UIDevice currentDevice] identifierForVendor]"会导致内存泄漏?

标签 ios memory-leaks

我正在使用 x-code 6.3 工具来分析我的应用程序,但我不明白为什么这一行会导致内存泄漏:

+ (NSString*)IDFV
{
    NSUUID* device_id = [[UIDevice currentDevice] identifierForVendor];// !100%
    return [device_id UUIDString];
}

我想发一张照片,但没有足够的声誉。

我选择了 instruments-leaks-call tr​​ee,然后选择 'invert call tr​​ee' 和 'hide system libraries',然后我得到了上面显示的泄漏代码之一,有人可以帮忙吗,谢谢。

最佳答案

这不是内存泄漏本身

UIDevice currentDevice 返回一个单例 - 也就是说,每次对 currentDevice 的后续调用都将返回对同一对象实例的引用。

此单例实例在第一次调用 currentDevice 时分配,此对象将保持分配状态,直到您的应用程序退出。

这显示为“泄漏”(从技术上讲是泄漏,因为该对象永远无法释放)但这是设计使然,无需担心。

关于ios - 为什么 "[[UIDevice currentDevice] identifierForVendor]"会导致内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881084/

相关文章:

objective-c - startMonitoringSignificantLocationChanges 缺乏准确性

javascript - 将 HTML5 集成到 native iPad 应用程序中

ios - iOS 上带有 UIWebView 的多标签 Web 浏览器

ios - 移动增强现实

java - Mysql占用更多RAM空间并逐渐增加,没有任何下降

java - tomcat集群环境中的内存泄漏

objective-c - 使用 Grand Central Dispatch 设置变量不可检索

.net - 关于在编写 .NET 代码时避免内存泄漏的 "Watch out"列表是什么?

javascript - Node JS forEach 内存泄漏问题

c++ - 使用 _crtBreakAlloc、_CRTDBG_MAP_ALLOC 追踪插件中的内存泄漏