我在iOS上使用Objective C大约一个月,但有很多以前的C ++经验。
我对EXC_BAD_ACCESS
的理解是它本质上是Segmentation Fault,即尝试访问允许区域之外的内存。虽然奇怪的是我在崩溃的iOS应用程序中也特别看到了SIGSEGV
。我注意到有一个代码参数(例如code=1
)作为此异常的一部分,我想知道该代码具体意味着什么。
我在google周围搜索过,似乎找不到关于此错误的正式文档,and apparently I'm not alone.有谁知道这里的代码参数是什么意思?
答案 0 :(得分:6)
如果您查看设备上生成的崩溃日志,您会看到:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at <some address>
有关与例外关联的code
参数的进一步说明,您可以参考usr/include/mach/kern_return.h
。它提供了中等可读的常量名称以及与常量值相关联的短注释模糊。
打开该文件的最快方法是在Xcode文件中键入常量KERN_INVALID_ADDRESS
,然后选择“跳转到定义”。 ;)
仅供参考:code=1
与KERN_INVALID_ADDRESS
直接相关。与此常量关联的注释模糊显示:
/* Specified address is not currently valid. */