gpt4 book ai didi

ios - Swift 崩溃报告函数签名特化 Owned To Guaranteed

转载 作者:行者123 更新时间:2023-11-28 12:36:41 27 4
gpt4 key购买 nike

在我用 Swift 重写了一些 Objective-C 代码后,我的许多用户开始遇到崩溃。当链接到 Xcode 时,我根本无法重现,而且我无法弄清楚为什么只有少数用户遇到崩溃。我从 HockeyApp 检索了日志,原因如下:在当前参数寄存器中找到的选择器名称:registeredContacts。这是我在代码中处理的一个数组,但在任何情况下我都不能让它在访问或设置该数组时崩溃。

我认为这可能是我的 Swift block 语法以及我如何从 Objective-C 调用它。我的 Swift 函数签名:

func retrieveActivities(handler: (([WPActivity], Error?) -> Void)?) {

我在 Objective-C 中调用它:

[[WPActivitiesManager shared] retrieveActivitiesWithHandler:nil];

有时我会使用该 block ,但在启动时我不需要它。正如我所说,这对我来说不会崩溃,也没有编译器警告。

我的崩溃日志的顶部:

Exception Type:  SIGTRAP
Exception Codes: #0 at 0x1001c0438
Crashed Thread: 0

Application Specific Information:
Selector name found in current argument registers: registeredContacts

Thread 0 Crashed:
0 Waypoint 0x00000001001c0438 function signature specialization <Arg[0] = Owned To Guaranteed, Arg[1] = Owned To Guaranteed> of Waypoint.WPActivitiesManager.(retrieveActivities (handler : ([__ObjC.WPActivity], Swift.Error?) -> ()?) -> ()).(closure #2) with unmangled suffix "_merged" + 612
1 Waypoint 0x00000001001c13a4 partial apply forwarder for Waypoint.WPActivitiesManager.(retrieveActivities (handler : ([__ObjC.WPActivity], Swift.Error?) -> ()?) -> ()).(closure #2) with unmangled suffix "_merged" + 64
2 Foundation 0x0000000189ca2754 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 12
3 Foundation 0x0000000189be72c8 -[NSBlockOperation main] + 92
4 Foundation 0x0000000189bd78c4 -[__NSOperationInternal _start:] + 616
5 Foundation 0x0000000189ca4b00 __NSOQSchedule_f + 224
6 libdispatch.dylib 0x00000001880691c0 _dispatch_client_callout + 12
7 libdispatch.dylib 0x000000018806dd6c _dispatch_main_queue_callback_4CF + 996
8 CoreFoundation 0x000000018918bf2c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
9 CoreFoundation 0x0000000189189b18 __CFRunLoopRun + 1656
10 CoreFoundation 0x00000001890b8048 CFRunLoopRunSpecific + 440
11 GraphicsServices 0x000000018ab3e198 GSEventRunModal + 176
12 UIKit 0x000000018f0a42fc -[UIApplication _run] + 680
13 UIKit 0x000000018f09f034 UIApplicationMain + 204
14 Waypoint 0x0000000100122888 main (main.m:14)
15 libdyld.dylib 0x000000018809c5b8 start + 0

我怀疑 registeredContacts 评论(我相信是由 HockeyApp 添加的)在这里不相关,但它是一个 ObjC/Swift 问题。任何想法表示赞赏。

日志终于在 Xcode 中可用,我有以下附加信息:

Xcode log

最佳答案

I suspect the registeredContacts comment (added by HockeyApp I believe) is not relevant here

不,我认为你搞反了。这正是相关的。与您的崩溃报告无关。

SIGTRAP 仅仅意味着我们得到了一个异常(exception)。异常是在代码 中(或者更确切地说,在执行代码的过程中)抛出的。但你似乎没有得到任何关于它是什么的信息。我的猜测是 HockeyApp 实际上会干扰您接收真实报告,该报告会告诉您异常是什么。

因此问题出在 retrieveActivities 的某处。您可能会尝试通过计算行数来猜测位置(系统会告诉您方法中实际发生崩溃的行数)。我相信它可能像越界数组访问一样简单。因此,此处弹出数组 registeredContacts 这一事实非常具有启发性。在方法中的那个位置查找 registeredContacts 访问权限。

关于ios - Swift 崩溃报告函数签名特化 Owned To Guaranteed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40662085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com