я бы не назвал это заботой о GC, а назвал бы сознательным обдумыванием object graph программы и отношений владения, чтобы правильно расставить слабые ссылки. Это полезно даже при наличии GC.
RAC рзаличает холодные и горячие observables на уровне типов, их нельзя просто так скомпоновать, что увеличивает количество ошибок, обнаруживаемых компилятором. Однако RxSwift считает это недостатком, и это можно понять, так как это увеличивает порог входа для новых разработчиков.
RAC позволяет задать тип ошибки сигнала. Если использовать тип NoError (специальный тип, фактически enum без единого кейза) в качестве типа ошибки, получим compile-time гарантию того, что этот сигнал действительно никогда не завершится ошибкой. Это очень важно, например, для UI-биндингов.
В целом сложно однозначно сказать, что хуже, а что лучше. RxSwift — почти идетничный порт Rx.NET, что дает пользователям RxSwift возможность легко переносить опыт с других платформ, на которых есть Rx, это однозначно плюс.
RAC же, в свою очередь, пытается решить проблемы оригинального Rx, предоставить больше compile-time гарантий ценой ухода от оригинального Rx API.
Условные сценарии в HomeKit есть, просто не представлены в стандартном приложении. В приложениях Eve, Controller for HomeKit такая возможность есть.
Тихие пуши не требуют разрешения с iOS 8.
Необязательно.
В форматерах было бы здорово упомянуть clang-format.
По моему опыту такие баги возникают как раз от развесистого всепроникающего mutable state.
а что, нужны доказательства?
-
понял, point stil holds :)
я бы не назвал это заботой о GC, а назвал бы сознательным обдумыванием object graph программы и отношений владения, чтобы правильно расставить слабые ссылки. Это полезно даже при наличии GC.
Ну, по мне эти фичи как раз показывают разумное использование системы типов (а это вполне себе Swift-плюшка) во благо.
Ну и конечно protocol extension, кастомные операторы для биндинга, etc. Но это и в RxSwift есть.
В целом сложно однозначно сказать, что хуже, а что лучше. RxSwift — почти идетничный порт Rx.NET, что дает пользователям RxSwift возможность легко переносить опыт с других платформ, на которых есть Rx, это однозначно плюс.
RAC же, в свою очередь, пытается решить проблемы оригинального Rx, предоставить больше compile-time гарантий ценой ухода от оригинального Rx API.
Сильное заявление, конечно, особенно учитывая тот факт, что RAC 4 использует куда больше плюшек языка, несмотря на то что «вырос с Objective-C».