Как я могу преобразовать эту точечную запись во вложенные скобки Objective C? - PullRequest
1 голос
/ 17 февраля 2012

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

Может ли кто-нибудь распутать эти два метода в обычные скобки и объяснить, как это работает, чтобы в будущем я мог преобразовать их самостоятельно?

self.tableView.tableHeaderView = searchBar;

и

self.searchBar.autocorrectionType = UITextAutocorrectionTypeYes;

Ответы [ 3 ]

6 голосов
/ 17 февраля 2012

Вы можете использовать как получатель, так и установщик свойства с точечной нотацией.То, как заменить нотацию for, зависит от того, используете ли вы на самом деле метод получения (для получения значения свойства) или метод установки (для установки значения свойства).

Метод получения используется следующим образом: value = [object myProperty];

Установщик используется следующим образом: [object setMyProperty:value];

В строке:

self.tableView.tableHeaderView = searchBar;

мы используем установщик для изменения значения tableHeaderView в объекте self.tableView, поэтому его можно заменить на:

[self.tableView setTableHeaderView:searchBar];

, который можно заменить на: (на этот раз мы используем геттер)

[[self tableView] setTableHeaderView:searchBar];

СПо тем же рассуждениям вы можете написать:

[self.searchBar setAutocorrectionType:UITextAutocorrectionTypeYes];

Или:

[[self searchBar] setAutocorrectionType:UITextAutocorrectionTypeYes];
2 голосов
/ 17 февраля 2012

первый будет:

[[self tableView] setTableHeaderView: searchBar];

нет ничего плохого в использовании:

[self.tableView setTableHeaderView: searchBar];

, а второй:

[[self searchBar] setAutoCorrectionType: UITextAutocorrectionTypeYes];

здесь вы можететакже используйте:

[self.searchBar setAutoCorrectionType: UITextAutocorrectionTypeYes];
0 голосов
/ 17 февраля 2012

Почему вы хотите "избежать точечной нотации любой ценой"?

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

Пока мы находимся на этой теме, использование точечной нотации для всего является явно неправильным (и если книга использует это повсеместно, это технически возможно, я бы сказал, что это может быть не очень хорошая книга), но это ИМХО приятнодля добытчиков и сеттеров.Это хорошо, потому что ваш код уже информирует читателя о том, какой метод называется вызываемым методом.

(поэтому я бы сказал, что AutomaticBobRoss.paintAnImage неправильно, потому что вы вызываете метод, целью которого является выполнение операции- должно быть [AutomaticBobRoss paintAnImage] - но AutomaticBobRoss.lastImage - хорошее использование точечной нотации)

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