В -init
вы присваиваете автоматически освобожденное значение для databasePath
. В зависимости от того, как вызывается -checkAndCopyDB
, велика вероятность того, что databasePath
уже освобожден и переменная теперь указывает на что-то совершенно другое.
Вы могли бы справиться с этим, сохранив databasePath
в init
, но на самом деле нет причин хранить это в отдельном методе. Я бы переместил связанный с databasePath
код в init
в checkAndCopyDB
, который бы работал так же хорошо и избежал проблем с автоматическим выпуском.