Можно ли кастовать при отправке сообщения в target-c? - PullRequest
0 голосов
/ 21 октября 2011

у меня есть:

[[[[self navigationItem] leftBarButtonItem] customView] setTitle:@" Create "];

Что вызывает предупреждение «UIView» может не отвечать на «-setTitle:». Я пробовал:

[[[[self navigationItem] leftBarButtonItem] (UIButton*)customView] setTitle:@" Create "];

И получаю ошибки, когда я делаю это. 0 Я также пробовал кастовать с (id), но это тоже не сработало. Я знаю, что, возможно, я мог бы просто сохранить customView в UIButton и перейти оттуда, но мне просто интересно, возможно ли приведение внутри такого сообщения?

Ответы [ 2 ]

5 голосов
/ 21 октября 2011

Подумайте о том, что вы кастуете. Попробуйте это

[(UIButton*)[[[self navigationItem] leftBarButtonItem] customView] setTitle:@" Create "];

Разница в этой строке и в вашей строке в том, что вы должны приводить не свойство (например, customView), а возвращаемый объект, для которого вы собираетесь вызвать метод.

0 голосов
/ 25 октября 2011

Как уже говорилось ранее, было бы разумно проверить конкретный класс customView или экземпляр responsedsToSelector, в противном случае вы можете столкнуться со сбоями в случае изменения этого конкретного представления по любой причине. Иначе использование точечной нотации (все это на самом деле свойства) для такого типа вложений сделает ваш код более читабельным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...