作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Swift 类,它有一些“var”,它们是原始整数值,还有一些是原始整数值数组,或者像 CMTime 这样的结构数组。当我对对象执行 NSKeyedArchiver.archiveRootObject 时,如果我将编码限制为整数值、[CMTime] 和最小的整数数组,则一切正常。 (我可以编码,然后解码,并验证内容的相等性。)令人费解的是,对调试器理解的 [UInt16] 进行编码,其成员数量少于 100M,导致编码期间应用程序的内存分配增加到 4Gb,然后是 8Gb,然后是 12Gb(我点击了 STOP)。我使用 coder.encode(aSwiftArray, forKey:"aKey") 时是否存在一些问题,有时它可以工作,但其他时候则不行?
typealias WordSize = UInt16
class PixelHistogram :NSObject, NSCoding {
var pixelCount:Int = 0
var timeAtFrame: [CMTime] = [] // CMTime for each frame
var pixelVsDelta: [UInt] = [] // 256x256 histogram of pixel vs DeltaPixel
var histPixel:[WordSize] = [] // histogram of Y at each pixel [pixelCount][256]
}
// Initializing the various arrays...
histPixel = [WordSize](repeating: 0, count: 256*pixelCount)
pixelVsDelta = [UInt](repeating: 0, count: 256*256)
required convenience init?(coder aDecoder:NSCoder){
self.init()
timeAtFrame = aDecoder.decodeObject(forKey:Slot.timeAtFrame.rawValue ) as! [CMTime]
pixelVsDelta = aDecoder.decodeObject(forKey:Slot.pixelVsDelta.rawValue) as! [UInt]
func encode(with coder:NSCoder)
coder.encode(timeAtFrame, forKey: Slot.timeAtFrame.rawValue)
coder.encode(pixelVsDelta, forKey: Slot.pixelVsDelta.rawValue)
}
最佳答案
编码 histPixel 时内存失控的一个可能答案是,encodeObject 将数组中的每个 UInt16 值转换为 NSNumber。我假设编码只是在幕后使用encodeBytes。
关于swift - 为什么我的 Swift 3 编码跑掉了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43601232/
我文件中的一些文字在 PPDF 中被截断了。我可以看到单词在那里,但没有正确包装。 我的输出如下: 这是我的代码片段:
我是一名优秀的程序员,十分优秀!