Синтаксис в скобках + точка - PullRequest
3 голосов
/ 02 января 2012

Я работаю с Objective C уже пару месяцев, и я впервые вижу такой тип синтаксиса в цели c.Я думаю, что знаю эквивалент этого, но я хотел быть уверен.

В частности, код выглядит следующим образом

float imageHeight = [player texture].contentSize.height;

Что эквивалентно '[текстура игрока] .contentSize.height?Я знаю, что синтаксис точек и скобок может быть одним и тем же

something.backgroundColor = [UIColor redColor];
[something setBackgroundColor:[UIColor redColor]];

Вышеупомянутые два в значительной степени совпадают ..

Так что же происходит в моем первом примере?Я просто никогда не видел сочетание синтаксиса скобок и точек в одном.

Спасибо.

1 Ответ

4 голосов
/ 02 января 2012
float imageHeight = [player texture].contentSize.height;

Вероятно, это то же самое, что и:

float imageHeight = [[player texture] contentSize].height;

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

Итак, если предположить, что [player texture] возвращает указатель на объект (возможно, изображение), первое использование доступа к синтаксису точкисвойство этого объекта contentSize.Если -contentSize также возвращает указатель объекта, то следующее использование также будет преобразовано в вызов метода доступа.Более вероятно, однако, что свойство contentSize является NSSize, а NSSize является структурой с полями width и height.Таким образом, второе использование точечного синтаксиса, скорее всего, извлекает поле height из этой структуры.

Смешивание двух различных значений синтаксиса точек прекрасно работает для получения значения, но вывы получите ошибку, если попытаетесь использовать ее для установки значений.Если мои предположения в предыдущем абзаце верны, вы не можете сделать это:

[player texture].contentSize.height = 50;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...