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

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

Код в виде картинок
Вы можете скачать Playgrounds здесь и все попробовать вживую.
Спасибо, но это не оправдание
Ссылка никуда не ведет кроме UITableView. Можете сказать своими словами о чем там речь? __kindof представляет собой целую группу типов и может рассматриваться как некий обобщенный (generic) тип.
Из New Features in Xcode 7

KindOf. Objects declared as __kindof types express “some kind of X” to the compiler and can be used within generic parameters to constrain types to a particular class or its subclasses. Using __kindof allows constraints to be more flexible than an explicit class, and more explicit than just using id.
Прямые ссылки на методы в документации Apple как обычно не работают, извините.

Я говорил о следующем методе:
- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;


Никаких дженериков тут нет, как видите.
Почему нет? Это означает, что я могу использовать для ячейки любой тип, у которого superclass — UITableViewCell: TweetTableViewCell, ImageTableViewCell и т.д. Это своего рода generic с ограничением: superclass — UITableViewCell. Впрочем, я не настаиваю именно на термине generic. Но это обобщенный тип специального типа с заданным superclass.
Больше похоже на подпорку от Apple.

Зачем в сигнатуре директива __kindof, когда здесь и так возвращаемый тип (UITableViewCell *), а наследование с полиморфизмом ещё никто не отменял? Привет Барбаре Лисков.
Раньше id возвращался, теперь __kindof UITableViewCell *. Последнее более точно передает смысл и помогает компилятору выявлять ошибки. Если бы возвращался просто UITableViewCell, то нужно было бы делать приведение типов каждый раз, когда нужна кастомная ячейка.
Вообще-то это нужно не столько разработчикам на Objective-C, сколько инженерам Apple для совместимости со Swift. В Swift мы теперь для этого метода видим не AnyObject, а UITableViewCell, и не нужно делать «кастинг» для обычной UITableViewCell. В Swift 2 «кастинга» стало на порядок меньше. Про Барбару Лисков тоже знаем.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории