Как стать автором
Обновить

Комментарии 13

Итак, у вью-контроллера есть сильная ссылка на блоггера:


let bloger = Bloger()

А у блоггера есть массив с сильными ссылками на наблюдателей:


private lazy var subscribers : [Subscriber] = []

И в этот массив мы кладем ссылку на вью-контроллер.


Привет retain-cycle. )))

Все верно говоришь, уже поправил!

Круто. Спасибо за диалог.

Если захочешь больше в паттерны нырнуть - пиши. С радостью помогу, если нужно будет. ​

Почему модно говорить "подписывать на протокол" вместо "реализовать протокол"? Второй год уже эту шляпу вижу. Откуда это взялось, мне интересно? Conform(implement) vs Subscribe.

При этом особо забавно, что описываем паттерн наблюдатель и используем термин subscriber, подписчик :-)

protocol MyProtocol {}

extension MyProtocol {
    func print() {
        Swift.print(self)
    }
}

class MyClass: MyProtocol {}

Класс подписался или реализовал протокол?

Реализовал. У вас протокол не имеет методов. То, что вы добавили какой-то метод екстеншеном, вообще ничего не меняет. Он не относится к наследованию/реализации.

Если уж говорить про расширение функционала типов через экстеншены, то это ничем не отличается от простого написания в декларации этого типа. То, что ниже — идентично с той лишь разницей, что в екстеншене вы не сможете объявить хранимые свойства:
class A: P {}

class A {}
extension A: P {}


То, что вы добавляете протоколу с помощью экстеншенов не относится к типам, реализующих этот протокол.

Ну или объясните мне семантику термина «подписаться на протокол» :-)

Все ты верно говоришь, ни в одном учебнике на английском не читал «subscribe to the protocol”, есть только implement или conform. Если хочешь узнать откуда это взялось у русских - открой учебник по Swift 5.0 и попробуй поискать по ключу “подписанный”.

Вот по сраке ремнем таких учителей :-) Даже не задумываются о смысле слов.

Вы не русский?

Я считаю что «подписаться» для новичка звучит проще. Но это семантически неверно.

Я разве утверждаю? Но спасибо за ваш минус.

Я то русская, только пыталась умными словами написать :-)
Кратко: наследование и расширение функционала (называется traits) — совсем разные вещи. Не говоря уже о подписке. Могу подписаться на нетфликс, например, или на уведомления от сервиса, но на протокол — не умею.

Я тоже не умею, но с чувством юмора у меня получше. Спасибо за ваш минус.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории