如何解决如何解决SpriteKit SKTexture的CGImage“上下文泄漏”?
Xcode 11-12,MacOS Catalina,Swift 5项目...
产生此代码“检测到上下文泄漏,msgtracer返回-1”错误:
import Foundation
import SpriteKit
import GameKit
func getTextureImage(_ index: Int,isSky: Bool = true) -> CGImage {
let perlinSource = GKPerlinNoiseSource(
frequency: 1,octaveCount: 7,persistence: 0.5,lacunarity: 2.0,seed: 123
)
let noise = GKNoise(perlinSource)
noise.gradientColors = [
-1.0: NSColor(red: 0.0,green: 0.15,blue: 0.85,alpha: 1.0),1.0 : NSColor(red: 1,green: 1,blue: 1,]
noise.move(by: vector_double3(Double(index),0))
let noiseMap = GKNoiseMap(noise,size: SIMD2(repeating: 1),origin: SIMD2(repeating: 0.0),sampleCount: SIMD2(repeating: 16),seamless: false)
let t = SKTexture(noiseMap: noiseMap)
let i = t.cgImage()
return i
}
for x in 0...128 {
let texture = getTextureImage(x)
}
如何通过.cgImage()
方法调用来解决该错误?
我需要来自彩色 GKNoiseMap 的CGImage数据,然后将其与MetalKit一起使用,以通过
MTKTextureLoader.newTexture(cgImage: texture,options: textureLoaderOptions)
解决方法
是的,我当然尝试过
autoreleasepool {
let t = getTextureImage(x)
}
并解决了问题:)因此,您必须在Swift API中将autoreleasepool
与NSImage和CGImage一起使用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。