У меня MainViewController вызывает WebViewController (из примера приложения UICatalog) В WebViewController я использую некоторую функцию setValue () {...} для установки некоторого значения, переданного в качестве параметра переменной (NSString * value) из WebViewController.h, но когда я пытаюсь из MainViewController что-то вроде WebViewController targetViewController ... targetViewController.setValue (значение), он говорит: "ошибка: запрос члена 'setValue' не в структуре или объединении" ...





Если у вас есть свойство с именем «value» и вы используете @sythesize для создания для вас метода, в этом случае вы вызываете его с помощью этого «.» обозначение:
targetViewController.value = whatever;
Или вы можете вызвать сеттер напрямую, независимо от того, вы или @synthesize пишете метод:
[targetViewController setValue:whatever];
Синтаксис свойства (class.property = something) на самом деле является просто сокращением вызова метода "setValue:", а в ответ механизмы свойств @property и @synthesize просто пишут для вас полезный фрагмент кода.
Обновлено: я уже говорил, что если вы просто написали метод «setValue:», вы могли бы вызвать его, используя нотацию «class.value = newValue», но это было неверно - вы должны определить @property для использования ». обозначение.
я полагаю, что
targetViewController.value = whatever;
будет работать, только если у вас уже объявлено @property; в противном случае вам нужно будет использовать полный синтаксис вызова метода:
[targetViewController setValue: whatever];
В остальном Кендалл прав насчет использования сеттеров и @synthesize.
Также ваш синтаксис написан с использованием процедурного C
targetViewController.setValue(value);
который определенно не будет работать.
Вам также необходимо обязательно # импортировать файл targetViewController.h.
К сожалению, с моей стороны, вы полностью правы - после тестирования вы должны использовать @property для вызова с использованием синтаксиса class.value. Отредактирую свой ответ, чтобы не распространять ложные представления ...