Проблемы командной разработки под iOS

Preview:

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 туда же

Я готов ответить на ваши вопросы

Recommended