userDefaults.setObject аварийно завершает работу на устройстве, но не в симуляторе iOS

У меня проблемы с приложением. Он работает в симуляторе, но вылетает при запуске на реальном устройстве. Код довольно прост:

class loginScreen: UIViewController {

    let userDefaults = NSUserDefaults.standardUserDefaults()

  override func viewDidLoad() {
    super.viewDidLoad()

    userDefaults.setObject("127.0.0.1", forKey: "host")
    userDefaults.synchronize()
}

Я протестировал это на симуляторе iOS 7 и iOS 8 без проблем, но при запуске на реальном устройстве он вылетает в строке userDefaults.setObject("127.0.0.1", forKey: "host"), и я действительно не знаю почему. В консоли отладчика у меня нет сообщений (кроме «EXC_BAD_ACCESS» в строке setObject при сбое), а в журналах сбоев iPhone я могу прочитать:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0xfffffffc

Я не могу понять, почему две «системы» ведут себя так по-разному ..

Конечно, я пробовал много предложений, например:

  • размещение и userDefaults.synchronize() перед методом setObject

  • объявить переменную NSString со значением «127.0.0.1» и использовать ее в методе setObject

  • используйте setValue вместо setObject

  • используйте другой тип (userDefaults.setObject(666, forKey: "host"))

но ничего не меняется, он всегда вылетает, когда пытается установить значение для userDefaults ... любая помощь или предложения будут оценены!

PS: комментируя userDefaults.setObject("127.0.0.1", forKey: "host") и userDefaults.synchronize() приложение запускается без проблем

Спасибо!


person Nerkyator    schedule 24.07.2014    source источник
comment
Вы уверены, что проблема связана с пользовательскими настройками по умолчанию, попробуйте прокомментировать последние две строки и запустить приложение и посмотреть, не вылетает ли оно по-прежнему, если да, то это имеет отношение к настройке вашего представления   -  person Geet    schedule 24.07.2014
comment
извините ... моя вина ... я забыл перечислить это в своих попытках ... в любом случае да, без этих строк приложение работает без проблем, поэтому я почти уверен, что проблемы в userDefaults ... но я не могу понять, почему только на реальное устройство .. (я редактирую свой пост, добавляя эту попытку)   -  person Nerkyator    schedule 24.07.2014
comment
Вы обязательно удалили все предыдущие версии приложения на своем телефоне перед тем, как попробовать это?   -  person Jack Chorley    schedule 24.07.2014
comment
Честно ... нет ... То есть, я нажимаю кнопку воспроизведения в XCode, но я никогда не удалял ее прямо с телефона, прежде чем попробовать ... Я постараюсь и дам вам знать ... спасибо!   -  person Nerkyator    schedule 24.07.2014


Ответы (1)


Похоже, очистка проекта и его переустановка на устройстве решили проблему. Спасибо всем за ответы!

person Nerkyator    schedule 24.07.2014