调用NSRegularExpression时出现分段错误:matchesInString

时间:2014-10-16 13:44:50

标签: ios objective-c segmentation-fault nsregularexpression

启动时,我的(已部署的)iOS应用程序崩溃了。看起来它发生在一些lib函数中,我不知道这是怎么回事。控制台输出显示

Oct 15 17:05:42 iPadMiniR MyApp[260] <Warning>: INFO: downloading package data 5 of 5...
Oct 15 17:05:42 iPadMiniR ReportCrash[261] <Error>: task_set_exception_ports(B07, 400, D03, 0, 0) failed with error (4: (os/kern) invalid argument)
Oct 15 17:05:42 iPadMiniR ReportCrash[261] <Notice>: ReportCrash acting against PID 260
Oct 15 17:05:42 iPadMiniR diagnosticd[150] <Error>: error evaluating process info - pid: 260, punique: 260
Oct 15 17:05:42 iPadMiniR ReportCrash[261] <Notice>: Formulating crash report for process myApp[260]

所以我分析了崩溃报告:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000058
Triggered by Thread:  4
[...]
Thread 4 name:  Dispatch queue: com.apple.root.default-qos
Thread 4 Crashed:
0   libobjc.A.dylib                 0x00000001946d3bd0 objc_msgSend + 16
1   Foundation                      0x0000000184ac884c -[NSSimpleRegularExpressionCheckingResult initWithRanges:count:regularExpression:] + 176
2   Foundation                      0x0000000184aaf2a4 -[NSRegularExpression(NSMatching) enumerateMatchesInString:options:range:usingBlock:] + 1340
3   Foundation                      0x0000000184ac8720 -[NSRegularExpression(NSMatching) matchesInString:options:range:] + 152
4   myApp                           [...]

我知道Segfault是什么,但我不明白,为什么它会在图书馆功能中发生。我已经在Apple的NSRegularExpression开发人员文档(enumerateMatchesInString:options:range:usingBlock:matchesInString:options:range:下)搜索并搜索NSSimpleRegularExpressionCheckingResult,但我找不到任何内容这有帮助。在StackOverflow上的类似问题中,SIGSEGV不在库函数中,而是在用户代码中。

我的问题是:在这种情况下,如何发生Segfault?不是Objective-C-Library-Functions检查指针吗?或者可能是指针在检查和使用之间悬空(弱指针,但我没有其中任何一个)?

我对iOS开发很陌生,所以感谢您的帮助:)

我使用的是XCode 6.0.1和iOS 8.0.2。

0 个答案:

没有答案