代码改变世界

iOS开发笔记错误集

2018-06-07 19:54  Ansersion  阅读(414)  评论(0编辑  收藏  举报

错误类型列举

错误类型A:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

错误类型B:EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)

错误类型C:signal SIGABRT(this class is not key value coding-compliant for the key XXXX)

 

发生情形

错误使用01

误以为变量溢出后会截断(然而并没有,只会报错)

举例

1 var a: UInt8 = 0x80
2 a += UInt8(0x01)
3 a += UInt8(0x80) // error:a == 0x101;UInt8溢出

报错

类型A/类型B

推荐做法

1 var a: UInt8 = 0x80
2 var b: Int = Int(a)
3 b += 0x01
4 b += 0x80
5 a = UInt8(b & 0xFF) // 取Int的低8位,可防止溢出

 评价:

与常见的语言特性不同,极易混淆,大坑级错误。

 

错误使用02

删除或修改了@IBOutlet变量,但没有同步删除或修改@IBOutlet链接关系

举例

从storyboard上“ctrl-拖拽”了一个Outlet:

@IBOutlet weak var imageTest: UIImageView!

然后删除了该行代码

或者将其修改为

@IBOutlet weak var imageTestttt: UIImageView!

报错

类型C

推荐做法

在storyboard上寻中之前的imageView,然后在连接检查窗口中所对应的引用删除。

评价:

习惯用代码开发UI的同学易犯,头次接触该错误的同学往往好无头绪,入门级错误。