ios obj.var = exp VS [obj var: exp] - PullRequest
       15

ios obj.var = exp VS [obj var: exp]

1 голос
/ 05 ноября 2011

Почему / Когда вы используете один поверх другого?Я только столкнулся с проблемой, где я получил предупреждение, используя одно, и никакое предупреждение, используя другое.

пример:

tableView.tableHeaderView = label; // worked
[tableView tableHeaderView:label]; // did not work - "instance method '-tableHeaderView:' not found (return type defaults to 'id')"

в замешательстве

1 Ответ

6 голосов
/ 05 ноября 2011

сеттеры обычно имеют префикс set. Попробуйте вместо этого:

[tableView setTableHeaderView:label];

То есть это:

tableView.tableHeaderView = label;

преобразуется в:

[tableView setTableHeaderView:label];

автоматически компилятором при использовании точечной нотации.

Когда объявляет свойство objc, это соглашение также применяется к объявленному имени свойства для установщика (снова по умолчанию).

Получатели не используют это соглашение, их селекторы (по умолчанию) совпадают с объявленным именем свойства:

view = tableView.tableHeaderView;

невероятно похож на:

view = [tableView tableHeaderView];
...