Swift 3iOS 10泄漏

Swift 3iOS 10泄漏,第1张

概述当我运行仪器并检查泄漏时,它显示的泄漏主要包括: _ContiguousArrayStorage<String>_NativeDictionaryStorageOwner<Int, CGFloat>_NativeDictionaryStorageOwner<String, AnyObject> 这是我使用Swift 3并在使用iOS 10的设备上进行测试的时候. 泄漏仅出现在iOS 10中,而 当我运行仪器并检查泄漏时,它显示的泄漏主要包括:

_ContiguousArrayStorage<String>_NativeDictionaryStorageOwner<Int,CGfloat>_NativeDictionaryStorageOwner<String,AnyObject>

这是我使用Swift 3并在使用iOS 10的设备上进行测试的时候.

泄漏仅出现在iOS 10中,而在iOS 9.x上,一切似乎都是正常的.最重要的是,在iOS 10中,UISwitch似乎也没有解除分配.

目前我一直在创建各种各样的解决方法,试图避免使用字典,在某些情况下使用数组,这使得代码真的很烦人.

题:

我是否应该关注这一点,并尝试解决所有这些泄漏或等待并希望它将在未来的更新中修复?如果是这样,是否有任何地方可以检查哪些错误已知?

解决方法 我遇到了同样的问题并花了很多时间挖掘.我发现如果你从Objective-C代码创建Swift对象并且Swift对象具有本机Swift字典属性,你会看到这个泄漏.如果所有代码都是Swift,则不会发生这种情况,更有用的是,如果将原生Swift字典更改为NSDictionary,它将不会泄漏.这也适用于Swift Set和NSSet.我还看到泄漏发生在iOS 10而不是iOS 9上.

// LeakySwiftObject.swiftclass LeakySwiftObject: NSObject {    let dict = [String: String]() // <- Any native Swift dictionary will reproduce the leak}// ObjectiveCObject.h@class LeakySwiftObject;@interface ObjectiveCObject : NSObject@property (strong) LeakySwiftObject *leaky;@end// ObjectiveCObject.m@implementation ObjectiveCObject- (instancetype)init{    self = [super init];    if (self) {        self.leaky = [LeakySwiftObject new];    }    return self;}@end// VIEwController.swiftclass VIEwController: UIVIEwController {    let testObj = ObjectiveCObject()}

泄漏仪器报告泄漏:_NativeDictionaryStorageImpl<字符串,字符串>_NativeDictionaryStorageOwner<字符串,字符串>

总结

以上是内存溢出为你收集整理的Swift 3/iOS 10泄漏全部内容,希望文章能够帮你解决Swift 3/iOS 10泄漏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存