首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode仪器泄漏。“@callee_guaranted() -> ()”的意义

Xcode仪器泄漏。“@callee_guaranted() -> ()”的意义
EN

Stack Overflow用户
提问于 2019-05-02 19:13:43
回答 1查看 8.6K关注 0票数 16

当我试图跟踪Xcode仪器中的内存泄漏时,我经常在Stack Trance中看到这一行:

代码语言:javascript
运行
复制
thunk for @escaping @callee_guaranteed () -> ()

什么意思?我甚至不能翻译这个词,更不用说它在这方面的技术意义了。整个堆栈跟踪如下所示:

代码语言:javascript
运行
复制
0 libsystem_malloc.dylib calloc
1 libobjc.A.dylib weak_resize(weak_table_t*, unsigned long)
2 libobjc.A.dylib weak_register_no_lock
3 libobjc.A.dylib objc_storeWeak
4 SpriteKit -[SKNode(setParent) setParent:]
5 SpriteKit -[SKNode insertChild:atIndex:]
6 SpriteKit -[SKNode addChild:]
7 IOSTest PieceNode.setup() /.../PieceNode.swift:66
8 IOSTest LabeledPieceNode.setup() /.../PieceNode.swift:86
9 IOSTest closure #1 in closure #1 in MaskedRectBoardNodeController.maskedRectBoard(_:didFill:with:alongGravity:) /.../MaskedRectBoardNodeController.swift:48
10 IOSTest thunk for @escaping @callee_guaranteed () -> () /.../<compiler-generated>:0
11 libdispatch.dylib _dispatch_call_block_and_release
12 libdispatch.dylib _dispatch_client_callout
13 libdispatch.dylib _dispatch_main_queue_callback_4CF$VARIANT$mp
14 CoreFoundation __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
15 CoreFoundation __CFRunLoopRun
16 CoreFoundation CFRunLoopRunSpecific
17 GraphicsServices GSEventRunModal
18 UIKitCore UIApplicationMain
19 IOSTest main /.../PauseMediator.swift:13
20 libdyld.dylib start
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 19:24:13

thunk通常是一个关于延迟函数调用的框(可能会添加一些上下文,并且可能需要额外的上下文来完成)。在Swift中,块通常用于帮助管理内存或调用闭包周围的约定。作为一项规则,您可以忽略thunk;这是一个实现细节。

这真正告诉您的是,您在某个地方泄漏了一个SKNode,并且SKNode是在一个分派到主队列的块中创建的(可能使用DispatchQueue.main.async)。这个调用堆栈实际上不太可能与泄漏有关。它只是告诉你泄漏的对象是在哪里创建的。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55958834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档