这是一个Swift错误吗?

时间:2016-11-20 12:13:25

标签: objective-c swift memory memory-management

TL; DR:从plist文件初始化数据使我的Swift应用程序"泄漏"存储器

我正在使用Swift构建一个应用程序,用数据对其进行测试,我制作了一个plist文件并用它初始化NSArray,如下所示:

 NSArray(contentsOfFile: myFile)!

然后我会得到这个数组的元素,所以NSDictionary,NSString ......当然我会强调那些,就像那样:

if let dataDic = element as? [String:Any] { ... }

但即使这样做,我认为它仍然是NSArray的权利吗?

所以,我的问题是虽然我的算法所处理的数据量没有增加(它总是两个相同大小的数组)我的应用程序的内存消耗呢!

多次检查我的代码后,我使用Instruments检查我的代码。使用分配工具,我发现一些有线类型似乎真的 Swifty ...:CFString,CFDictionnary和其他类似的类型。

以下是截图示例:
enter image description here

正如您在此屏幕截图中看到的,负责的来电者是[NSPropertyListSerialization propertyListWithData:...]

这让我想到我使用非Swift代码从plist文件初始化我的数据这一事实。
我决定在不使用此plist文件的情况下生成数据,现在,问题就消失了!但是什么可能导致这个? Objective-C类型及其Swift对应物是否可以互换?我错过了什么或者这是一个Swift错误吗?

谢谢。

编辑:我可以根据需要发布代码示例

0 个答案:

没有答案