|
@@ -43,6 +43,8 @@ |
|
|
часто появляющихся задач. |
|
|
часто появляющихся задач. |
|
|
Существуют основные, структурные, поведенческие и пораждающие шаблоны. |
|
|
Существуют основные, структурные, поведенческие и пораждающие шаблоны. |
|
|
|
|
|
|
|
|
|
|
|
Самые часто используемые в iOS: MVC, Singleton, Delegate, Observer. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Шаблон одиночки (Singleton) |
|
|
## Шаблон одиночки (Singleton) |
|
|
|
|
|
|
|
@@ -80,7 +82,6 @@ |
|
|
* Если счётчик 0, то объект удаляется ARC'ом. |
|
|
* Если счётчик 0, то объект удаляется ARC'ом. |
|
|
* Слабая ссылка никак не влияет на счётчик, поэтому она никак не "удерживает" объект от удаления, на который ссылается. |
|
|
* Слабая ссылка никак не влияет на счётчик, поэтому она никак не "удерживает" объект от удаления, на который ссылается. |
|
|
* Чаще всего используется для делегатов. |
|
|
* Чаще всего используется для делегатов. |
|
|
* Ссылки на optional всегда слабые. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Что такое ARC? |
|
|
## Что такое ARC? |
|
@@ -201,11 +202,32 @@ Ref type, capture variables |
|
|
Покрывать тестами в первую очередь нужно ключевую возможность, |
|
|
Покрывать тестами в первую очередь нужно ключевую возможность, |
|
|
предоставляемую приложением, например, заказ такси в приложении заказа такси. |
|
|
предоставляемую приложением, например, заказ такси в приложении заказа такси. |
|
|
|
|
|
|
|
|
Методологии? |
|
|
|
|
|
|
|
|
Методологии: |
|
|
|
|
|
|
|
|
|
|
|
* TDD |
|
|
|
|
|
* BDD |
|
|
|
|
|
|
|
|
|
|
|
* Fakes: часто включают в себя stubs, mocks. а воообще сами по себе просто пустышки без наполнения |
|
|
|
|
|
* Stubs: пустышки с наполнением, чтобы лишь провести тесты |
|
|
|
|
|
* Mocks: пустышки с наполнением и внутренними счётчиками, по которым можно проверить клиента |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## RunLoop |
|
|
|
|
|
|
|
|
|
|
|
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16 |
|
|
|
|
|
|
|
|
|
|
|
Это цикл обработки событий, используемый для планирования работы и координирования |
|
|
|
|
|
принятия входящих событий. Целью RunLoop является поддержание потоков в работе, |
|
|
|
|
|
когда есть работа, либо укладывание потоков спать, если работы нет. |
|
|
|
|
|
|
|
|
|
|
|
У каждого потока есть ассоциированный с ним RunLoop. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Functional reactive programming |
|
|
|
|
|
|
|
|
|
|
|
Декларативная парадигма программирования, объединяющая в себе функциональное |
|
|
|
|
|
программирование и реактивную (асинхронный потоки) парадигму. В FRP мы |
|
|
|
|
|
описываем, что мы хотим сделать, а не как. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|