錯誤類型列舉this
錯誤類型A:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)spa
錯誤類型B:EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)3d
錯誤類型C:signal SIGABRT(this class is not key value coding-compliant for the key XXXX)code
發生情形blog
錯誤使用01開發
誤覺得變量溢出後會截斷(然而並無,只會報錯)同步
舉例it
1 var a: UInt8 = 0x80 2 a += UInt8(0x01) 3 a += UInt8(0x80) // error:a == 0x101;UInt8溢出
報錯入門
類型A/類型Bclass
推薦作法
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的同窗易犯,頭次接觸該錯誤的同窗每每好無頭緒,入門級錯誤。