Создаем пакет стандартными способами xcode
Далее можно сохранить его в любой git и применять метки (tag):
git tag -a 1.0.0 -m "version 1.0.0"
git tag
1.0.0
git push origin --tags
	Рассказываю сложные вещи простыми словами
Создаем пакет стандартными способами xcode
Далее можно сохранить его в любой git и применять метки (tag):
git tag -a 1.0.0 -m "version 1.0.0"
git tag
1.0.0
git push origin --tags
	var workItem: DispatchWorkItem? = nil
...
override func viewDidAppear(_ animated: Bool) {
   super.viewDidAppear(animated)
        
   let indicator = activityIndicator()
   indicator.startAnimating()
        
   workItem = DispatchWorkItem {
            // долгая команда
   DispatchQueue.main.async {
       indicator.stopAnimating()
       indicator.hidesWhenStopped = true
       }
   }
   DispatchQueue.global(qos: .utility).async(execute: workItem!)
}
...
override func viewDidDisappear(_ animated: Bool) {
    if let workItem = workItem {
        workItem.cancel()
        self.workItem = nil
    }
}
	Для подключения iTunes допустимы следующие разрешения:
Чтобы сделать код исключений в Firebase Crashlytics более читабельным все что нужно — это добавить эти три строчки в файл proguard-rules.pro:
-keepattributes *Annotation*Читать далее «Деобфускация кода exception в Firebase Crashlytics после падения приложения»
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
Все знания полученные здесь взяты из книги «Swift разработка приложений в среде Xcode для iPhone и iPad».
Исходный код можно получить с сайта GitHub https://github.com/Apress/beg-iphone-dev-w-swift-3