Почему нет предупреждения при приведении с 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];