Мне нужно было бы увидеть детали сбоя и еще больше исходного кода, чтобы быть на 100% уверенным, но я верю , что это вызвано тем, что ваш экземпляр NSUrlRequest
объявлен как локальная переменная. Повышение этой переменной в поле вашего типа должно решить эту проблему.
Экземпляр все еще может потребоваться после завершения метода. Однако в то время на него больше нет ссылок, и сборщик мусора может собрать его в любое время. Если вы соберете их, то, скорее всего, вы получите аварию, о которой упоминали.
Тот факт, что это не происходит в симуляторе, вероятно, вызван тем, что он быстрее (чем устройство), и код может завершиться до того, как GC соберет этот экземпляр. IOW это может привести к сбою, это просто время, которое заставляет его работать большую часть времени на симуляторе и почти никогда на устройствах.