所以,这是似乎只发生在其他人身上的那些崩溃之一,而且我只是感谢 Bugsnag 才发现的。
NSRangeException: -[__NSCFString characterAtIndex:]: Range or index out of bounds
到目前为止一切顺利,只是您的普通围栏错误或类似错误,对吗?除了堆栈跟踪看起来像:
[appname]:0x0006a399 • [appname]
[appname]:0x00089435 • [appname]
[appname]:0x002629cb • _ZNSt3__16vectorIiNS_9allocatorIiEEE21__push_back_slow_pathIiEEvOT_
[appname]:0x001802b5 • _ZNSt3__16vectorIN7gmscore4base10reffed_ptrINS1_6vector16GLBaseLabelBatchEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE
[appname]:0x0019d115 • _ZNSt3__16vectorIN7gmscore6vector4text15GlyphQuadVertexENS_9allocatorIS4_EEE21__push_back_slow_pathIRKS4_EEvOT_
[appname]:0x0004eb33 • [appname]
[appname]:0x0004eae8 • [appname]
所以我完全不知道这是从哪里来的,但它似乎不是由我的代码中的调用直接生成的characterAtIndex:
(此外,整个应用程序中只有一个这样的调用,并且得到了很好的保护)。它似乎是一个非常核心的 C 函数,它试图从索引超出范围的字符串中读取,但是从这个堆栈跟踪中我什至无法开始弄清楚它在哪里。有任何想法吗?