gpt4 book ai didi

ios - 调用 API 时应用程序总是崩溃

转载 作者:行者123 更新时间:2023-11-29 00:31:15 28 4
gpt4 key购买 nike

每次向 API 发出 HTTP 请求时,我的应用程序的一个用户都会遇到崩溃。这是崩溃痕迹:

Incident Identifier: 512C99DF-D432-4BAC-96DF-B32561A51C9B
CrashReporter Key: cdee4dd4d00f061439ba8ee6e2fdf4d5a9c4e889
Hardware Model: iPhone5,3
Process: myapp [312]
Path: /private/var/mobile/Containers/Bundle/Application/42EA0E64-28BB-48D0-9CDF-6F58F1823BDF/myapp.app/myapp
Identifier: com.myapp.myapp
Version: 3 (0.1.2)
Code Type: ARM (Native)
Parent Process: launchd [1]

Date/Time: 2017-01-18 21:30:47.47 -0500
Launch Time: 2017-01-18 21:30:41.41 -0500
OS Version: iOS 9.1 (13B143)
Report Version: 105

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0

Filtered syslog:
None found

Last Exception Backtrace:
(0x24dc5856 0x3673adfa 0x24d58bda 0xfe438 0x29188ae8 0x29188c34 0x295ccf7c 0x290b18d8 0x28fda85c 0x28fda68a 0x290b10cc 0x2880a85a 0x2880a6aa 0x2e897586 0x25e85340 0x24d76b54 0x24d88f76 0x24d8868a 0x24d86a9c 0x24cd90d4 0x24cd8ec8 0x2e04eaf4 0x28f622d8 0xa0288 0x36e8886e)

Global Trace Buffer (reverse chronological seconds):
2.392224 CFNetwork 0x00000000245e4a91 TCP Conn 0x15d78310 SSL Handshake DONE
2.598566 CFNetwork 0x00000000245e49cb TCP Conn 0x15d78310 starting SSL negotiation
2.599330 CFNetwork 0x000000002466479d TCP Conn 0x15d78310 complete. fd: 6, err: 0
2.600883 CFNetwork 0x000000002466589f TCP Conn 0x15d78310 event 1. err: 0
3.702969 CFNetwork 0x000000002466591d TCP Conn 0x15d78310 started
3.710171 CFNetwork 0x00000000246a640f Creating default cookie storage with default identifier
3.710171 CFNetwork 0x00000000246a63eb Faulting in CFHTTPCookieStorage singleton
3.710171 CFNetwork 0x00000000246e878b Faulting in NSHTTPCookieStorage singleton
3.714408 CFNetwork 0x000000002463e141 NSURLSessionTask finished with error - code: -1022
4.907331 libsystem_trace.dylib 0x00000000370086f9 dyld_image_header_containing_address(0x15e505e9) failed

但是该应用适用于所有其他用户,而且我知道 API 端点是完全可访问的。这也是一个 React Native 应用程序,不知道这是否与此相关,但这是发出请求的代码:

export default function api(apiName, paramsObj) {
return new Promise((resolve, reject) => {
let ip = 'xxx.xxx.xx.xxx';
fetch(`http://${ip}/api/${apiName}`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: paramsObj ? JSON.stringify(paramsObj) : null
})
.then(response => resolve(response.json()))
.catch(error => reject(error));
});
}

知道是什么导致了这次崩溃吗?

编辑

这是 API 的 JSON 响应示例:

[{"id":"584b7fe3e1e982176d5a5b3c","name":"My University","unlocked":true,"totalUsers":1200,"minimumUsers":1000}]

编辑 2

这是来自 Xcode 的符号化崩溃报告的屏幕截图(应用程序名称被屏蔽):

Symbolicated crash report from Xcode

编辑 3

经过进一步测试和调试后,我确定该问题有时也发生在运行 8.x 的 iPhone 5s 上。不管怎样,我看到了this answer到一个不同的问题,当我将这些行添加到应用程序的入口点时,它实际上解决了问题当我在 React Native 中单击“Debug JS Remotely”时> 开发者菜单。

const _XHR = GLOBAL.originalXMLHttpRequest ?  
GLOBAL.originalXMLHttpRequest :
GLOBAL.XMLHttpRequest

XMLHttpRequest = _XHR

从本质上讲,通过以上这些行,当模拟器(iPhone 4s、iOS 9.3)连接到 React Native Chrome 调试器时,问题停止并且列表被填充(没有越界错误)。但是,如果我断开模拟器与调试器的连接,或者如果我在 release 模式下运行应用程序,错误仍然存​​在。

最佳答案

RTCPicker 类型的对象(UIPickerView 的子类)正在尝试访问不存在的数组中的项目。比如数组中有 5 个项目,并尝试访问第 6 个项目。

顶部帧表明调用堆栈正在抛出异常,并且第三帧尝试从特定索引处的 NSArray 访问 item。

由于异常是致命的,这将使应用程序崩溃。

关于ios - 调用 API 时应用程序总是崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736325/

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