Xcode: EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode = 0xe7ffdefe)
Я получаю сообщение EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode = 0xe7ffdefe) при запуске моего приложения на устройстве iOS7.
Дело в том, что он работает плавно на симуляторе iOS7.
Используя точки останова, я обнаружил, что ошибка возникает в строке 6.
required init(coder aDecoder: NSCoder) {
personPicker = ABPeoplePickerNavigationController()
super.init(coder: aDecoder)
personPicker.peoplePickerDelegate = self
}
/*error line*/ @IBAction func BPressed(sender: AnyObject) {
self.presentViewController(personPicker, animated: true, completion: nil)
}
Эта ошибка является новой и не появилась на моем устройстве, пока я не добавлю эти строки в код;
let url = NSURL(string: urlPath)
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
Также; отладчик указывает на ошибку в этой строке:
0x16a7f0: trap
И выдает этот вывод в консоли:
фатальная ошибка: попытка создания неуправляемого экземпляра из нулевого указателя
Эта ошибка вызывает черный экран на устройстве, хотя я ничего не изменил в раскадровке.
Спасибо, что нашли время.
Изменить: эта ошибка не показала никаких результатов в поисковых системах, но я думаю, что это может быть связано с obj-c.
Ответы
Ответ 1
Я столкнулся с этой проблемой сегодня, тестируя некоторый код Swift на старый iPad 2 (я думаю, что это iPad 2 - модель MD368LL/A), работающая под управлением iOS 8.1.3. Оказалось, что проблема существует везде, что я называю что-то вроде:
Int(arc4random() % <someInt>)
Это работало отлично на более поздних iPad, iPhone5S, iPhone6 и т.д. Исправлено путем изменения кода на:
Int(UInt32(arc4random()) % UInt32(<someInt>))
Я думаю, что это переполнение регистра на старом оборудовании.
Ответ 2
В моем случае это закончилось тем, что было связано с проблемой переполнения бит, если вы добавили слишком большое число в слишком маленький тип. Например. Int(someNumber)
, если someNumber
был Int64
.
iPhone 5c разбивается на строку с нарушением кода:
![введите описание изображения здесь]()
Ответ 3
Я столкнулся с этой проблемой, в iPhone 5
, которая iOS 10.3.3
.
let date = Date()
// Crashes in `iPhone 5`, but works in `iPhone 5s`.
let time: Int = 1000 * Int(date.timeIntervalSince1970) //< Crash due to cast `Double` to `Int`
// This crashes in `iPhone 5`, and `iPhone 5s` too.
let time: Int32 = 1000 * Int32(date.timeIntervalSince1970)
// It works fine in `iPhone 5`, and `iPhone 5s`.
let time: Int64 = 1000 * Int64(date.timeIntervalSince1970)