#swift #xcode #macos #cocoa #macos-mojave
#swift #xcode #macos #cocoa #macos-mojave
Вопрос:
Мое приложение хорошо работает в macOS 10.14, но ломается в macOS 10.13. Как мне отладить его в Xcode, установив macOS 10.14? Или, по крайней мере, как мне узнать, что может пойти не так, может быть, есть какая-то статическая проверка кода?
Я предполагаю, что проблема может быть в этом коде:
private static func isSystemDarkModeEnabled() -> Bool {
let global = UserDefaults.standard.persistentDomain(forName: UserDefaults.globalDomain)
let style = global!["AppleInterfaceStyle"]
if style != nil amp;amp; (style as! String).lowercased() == "dark" {
return true
}
return false
}
private class SystemDarkModeChangeObserver {
static func register() {
SystemDarkModeChangeObserver.shared = SystemDarkModeChangeObserver()
}
private static var shared: SystemDarkModeChangeObserver?
private init() {
DistributedNotificationCenter.default().addObserver(self, selector: #selector(self.onChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
}
@objc func onChange() {
// ...
}
}
Ответ №1:
Вы можете изменить цель развертывания в общих настройках проекта. Xcode должен сообщить вам, что вы используете, чего нет в этом целевом объекте.
По умолчанию Xcode настроен на версию, установленную на вашем компьютере для разработки.
Комментарии:
1. Там указан 10.13, но у меня нет предупреждений. Я добавил пример кода, в чем может быть проблема.
2. Темный режим является новым в Мохаве. Вы пытались установить целевое значение на 10.13?
3. Да, у меня установлен 10.13. Пользователи, использующие 10.13, сообщают, что оно не работает. Возможно, я мог бы установить 10.13 и Xcode в виртуальной машине, но я думаю, что это требует слишком много времени.
4. Затем он сообщает вам, какие методы / свойства недоступны до Mojave. В вашем примере это выглядит так, как будто вы используете темный режим, который определенно недоступен до версии 10.14. Просто отключите эти вызовы, и все будет хорошо.
Ответ №2:
Пожалуйста, удалите производные данные,
Вы можете перейти к Файлу> Настройки рабочей области, если вы находитесь в среде workspace, или Файлу> Настройки проекта для обычной среды project. Затем щелкните по маленькой серой стрелке в разделе Производные данные и выберите папку вашего проекта, чтобы удалить его.
если используются pod, то удалите и переустановите все файлы pod заново.
Надеюсь, у вас это сработает!