Использование `id` для получения XCode для остановки предупреждения вместо правильных типов - PullRequest
0 голосов
/ 20 декабря 2010

Так же, как в прежние дни Java, я пишу такой код:

UIView *ball = [self.balls objectAtIndex:i];

, который вызывает предупреждение компилятора.Я знаю, что правильный способ решения проблемы - при условии, что он не взорвется во время выполнения - это использовать

UIView *ball = (UIView *)[self.balls objectAtIndex:i];

, но недавно я одобрил

UIView *ball = (id)[self.balls objectAtIndex:i];

Есть ли причина не делать этого?Это что-то меняет во время выполнения?Я думаю, что легче печатать и читать.

1 Ответ

2 голосов
/ 20 декабря 2010

Либо вы определили пользовательский тип, который отвечает на objectAtIndex: вместо использования встроенного массива, либо что-то не так с вашей настройкой. NSArray objectAtIndex: определено так, чтобы возвращать тип 'id', поэтому приведение результата к типу 'id' не имеет никакого эффекта. Кроме того, объекты любого типа могут быть назначены идентификатору, а объекты типа идентификатора могут быть назначены любому другому типу без генерации предупреждения компилятора.

В любом случае приведение указателя не оказывает влияния во время выполнения. Objective-C не изменяет способ работы указателей в C, кроме предоставления нескольких дополнительных неявных преобразований.

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