Почему нет предупреждения при приведении с viewWithTag?

Например,

UIImageView * iconView = [cell.contentView viewWithTag: TestTag];

Я помню, что если я не приведу тип явно, раньше будет предупреждение, но теперь XCode не показывает это, и моя версия XCode - 7.1.1, это новая функция или я изменяю некоторые конфигурации? кто может сказать мне почему?

1 ответ

Решение

В Objective-C есть новое ключевое слово (Xcode 7), __kindof, что позволяет лучше выразить возвращаемое значение метода. Вместо viewWithTag: возврате UIView *может вернуться __kindof UIView * что говорит компилятору что-то вроде:

Примите любой неявный downcast возвращаемого типа, если тип UIView или подклассUIView,

поскольку UIImageView это подкласс UIView, явное приведение не требуется. С другой стороны, следующая строка кода вызовет ошибку компилятора, потому что NSDate не подкласс UIView:

NSDate *date = [cell.contentView viewWithTag:TestTag];
Другие вопросы по тегам