<code>async/await</code>

问题描述 投票:0回答:1
一起工作。

这里是一个例子:

async/await

记忆一直升至220MB,这对我来说太多了。

通常,您可以将内部循环包裹在一个
func getImage() async -> NSImage? { return NSImage(named: "imagename") // Do some work } Task { // This leaks for _ in 0 ..< 1000000 { let image = await getImage() print(image!.backgroundColor) } }
中,并且可以解决问题,但是当我使用
autoreleasepool
函数尝试时,我会得到此错误:

async

有什么办法解决的?还是有另一种方法可以实现相同的目标,即释放循环内部的可可对象?
	

@@couchdeveloper提到要包裹

Cannot pass function of type '() async -> ()' to parameter expecting synchronous function type

getImage
,因为它有自己的
Task
,而且似乎有效!

恰恰更改

autoreleasepool
swift macos cocoa async-await swift-concurrency
1个回答
10
投票
to

func getImage() async -> NSImage? {
    return NSImage(named: "imagename") // Do some work
}

基于@CouchDeveloper和您自己的答复,您可以使用这些全局功能覆盖:

func getImage() async -> NSImage? { await Task { return NSImage(named: "imagename") // Do some work }.value }


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.