TL; DR:从plist文件初始化数据使我的Swift应用程序"泄漏"存储器
我正在使用Swift构建一个应用程序,用数据对其进行测试,我制作了一个plist文件并用它初始化NSArray
,如下所示:
NSArray(contentsOfFile: myFile)!
然后我会得到这个数组的元素,所以NSDictionary,NSString ......当然我会强调那些,就像那样:
if let dataDic = element as? [String:Any] { ... }
但即使这样做,我认为它仍然是NSArray的权利吗?
所以,我的问题是虽然我的算法所处理的数据量没有增加(它总是两个相同大小的数组)我的应用程序的内存消耗呢!
多次检查我的代码后,我使用Instruments检查我的代码。使用分配工具,我发现一些有线类型似乎真的 Swifty ...:CFString,CFDictionnary和其他类似的类型。
正如您在此屏幕截图中看到的,负责的来电者是[NSPropertyListSerialization propertyListWithData:...]
这让我想到我使用非Swift代码从plist文件初始化我的数据这一事实。
我决定在不使用此plist文件的情况下生成数据,现在,问题就消失了!但是什么可能导致这个? Objective-C类型及其Swift对应物是否可以互换?我错过了什么或者这是一个Swift错误吗?
谢谢。
编辑:我可以根据需要发布代码示例