Upload
dmitriy-gordin
View
77
Download
3
Embed Size (px)
Citation preview
Страдания и болькомандная разработка под iOS
Инструменты
● XCode 8● Swift 3● CocoaPods● git
Storyboard
Хмм, выглядит неплохо
1. А может быть вот так?
РешениеИспользовать класс Router для хранения всех идентификаторов и переходов
Выполнять их программно, не используя storyboard segue
Не знал какую картинку сюда вставить, пусть будет котик
А что если нас двое?
Разработчик 1 Разработчик 2
2.
Какой же выход?
Решения нет
Один разработчик должен выбросить свою верстку и проделать ее заново
Решение: Storyboard Reference
Использовать Xib-файлы
14
3. Передача параметра между VC’амиВ исходном
override func prepareForSegue (segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == “goToTargetViewControllerSegue" { let controller = segue.destinationViewController as? MoviePreviewController controller?.movieViewModel = viewModel.movieViewModel() }}
В целевом
class MoviePreviewController : UIViewController { var movieViewModel: MovieViewModel ! override func viewDidLoad() { super.viewDidLoad() doSomethingWithMovieTitle(movieViewModel.title) }}
Но стоит мне опечататься или в Storyboard или в исходном VC
=> неизбежный RuntimeException
Частичное решение: такое же как и случае 1.Решение: отказаться от storyboard в пользу Xib файлов
Верстка кодом
Swift
Может быть всё-таки ObjC?
1. Swift’у не нужно поддерживать совместимость с C, никаких `@`
2. Swift’у не нужно отдельного заголовочного файла (актуально, т.к. XCode не умеет рефакторинг)
Может быть всё-таки ObjC?
3. В Swift не получится “неожиданно” словить NullPointerException
4. При работе со старыми API память не течёт (CoreGraphics, например)
Может быть всё-таки ObjC?
5. Удобнее работать со строками (никаких %d, %S, %@ => не ошибёшься)
6. Swift быстрее ObjC (Swift ≈ С++)
7. namespaces (никаких префиксов NS, CG, etc)на SwiftBook были ещё доводы, но они сомнительные
Так ли все хорошо?Однажды:
Соглашаемся
WHAT?!
а ещё все зависимости из CocoaPods туда же
Я готов ответить на ваши вопросы