2016-08-29 4 views
0

Приложение для часов, которое я разрабатываю, не использует ARC. И поэтому я освобождаю все свойства объектов в каждом интерфейсе в dealloc, как показано ниже.WatchKit без ARC вызывает сбои, когда dealloc

-(void)dealloc { 

    [obj1 release]; 
    [obj2 release]; 
    ... 
    [super dealloc]; 
} 

Это вызывает сбой при закрытии интерфейса (например, для возврата к основному интерфейсу). Почему это так?

+0

* Приложение для часов, которое я разрабатываю, не использует ARC. * Поскольку вы не приняли ARC, вы делаете это более сложным для себя: a) пытаетесь вручную подсчитать счет (что приведет к большему количеству сбоев или утечек) , вместо того чтобы позволить инструментам автоматически делать это за вас и b) писать устаревший код, который нужно будет портировать в будущем. –

+0

У меня нет выбора, текущий проект, который будет прикреплен к приложению часов, не имеет ARC. – GeneCode

+0

Просто потому, что существующее приложение iOS не использует ARC, это не означает, что новое приложение для часов также не может использовать ARC. Настройки цели * могут * переопределять настройки проекта. Это позволит скомпилировать ваше приложение часов с поддержкой ARC, в то время как ваше приложение iOS может продолжать использовать ARC, пока вы его не обновите. –

ответ

1

Сохранения и релизы должны быть сбалансированы в контексте вашего класса. Вероятно, вы не сохранили, когда вы назначили одну из этих переменных экземпляра, и, таким образом, это перевыпуск. Вы можете попробовать включить зомби, чтобы поймать сообщение на освобожденный экземпляр, если это так.