Кристиан Бенуа
Компания: Т-Банк
Доклад о методе swift_conformsToProtocol
из Swift Runtime.
Расскажу, что это за метод, как он работает под капотом, почему так долго выполняется и как свести к минимуму количество вызовов метода. Объясню, какой код может работать медленно из-за явного или неявного вызова swift_conformsToProtocol
: вызовы as?/as! SomeProtocol
, String(describing:)
и дженерик-типы с type-generic-constraint.
Покажу внутрянку String(describing:)
. Объясню, почему этот вызов такой долгий. Расскажу, чем и когда можно заменить String(describing:)
.
Обсудим, как мы оптимизировали вызовы as?/as!
, где без них никак не обойтись, а также покажу пару приемов, которые позволяют уйти от вызовов as?/as!
. Расскажу про наш форк SnapKit, в котором мы убрали все вызовы as?/as!
.
Поговорим о том, чем плохи type-generic-constraint, почему они вызывают метод swift_conformsToProtocol
. Покажу на примерах, чем заменить type-generic-constraint, и расскажу, что делать, если без них совсем не обойтись.
В конце дам набор рекомендаций, как малой кровью ускорить работу вашего приложения.
Будет полезно iOS-разработчикам, которые хотели бы ускорить свои мобильные приложения.
Компания: Т-Банк