Как проверить приложение на совместимость с предыдущими версиями macOS?

#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 заново.

Надеюсь, у вас это сработает!