Синтезировать ошибки свойств при компиляции приложения для iPhone

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

Я завершил приложение, но затем решил объединить его с другим приложением. (Один просто меняет изображение при нажатии, один отображает текст из текстового поля при нажатии кнопки, так что не слишком сложно объединить)

Я успешно скопировал большую часть кода, но где-то я ошибся, так как 6 раз я получаю сообщение об ошибке

@synthesize property must be in implementation context

для 6 вещей, которые я синтезирую.

Мне кажется, что я все скопировал и проверил все экземпляры синтезированных элементов, так что они определенно там, поэтому я не знаю, почему это происходит.

Когда я помещаю строки, вызывающие ошибки, в контекст реализации (т. е. между @implementation и @end), я получаю

no declaration of property 'X' found in the interface

где x — это название того, что я синтезирую.

Как его вставить в интерфейс? казалось, что я уже связал все компоненты Interface Builder с соответствующими фрагментами кода.


person lavelle    schedule 01.10.2010    source источник


Ответы (2)


Вы должны объявить свойство в своем интерфейсе

@interface CustomAlertViewController : UIViewController {
    UIView  *alertView;
    UILabel *label;
}
@property (nonatomic, retain) IBOutlet UIView *alertView; <--- Property
@property (nonatomic, retain) IBOutlet UILabel *label;    <--- Property
person Henrik P. Hessel    schedule 01.10.2010
comment
Обратите внимание, что в этом ответе есть потенциально опасная ошибка: свойства alertView и label автоматически синтезируются с использованием переменных экземпляра _alertView и _label (ivars). Поскольку вы объявляете дополнительные alertView и label ивары, вы получаете два набора: те, которые начинаются с _, которые поддерживают свойства, и те, которые имеют то же имя, что и сами свойства. Чтобы исправить это, просто удалите сегмент между фигурными скобками, так как последние версии Xcode/Objective-C автоматически синтезируют свойства и не требуют, чтобы вы специально объявляли поддерживающий ivar. - person Ricardo Sanchez-Saez; 22.07.2013

Свойство @synthesize должно находиться в контексте реализации

подразумевает, что вы неправильно помещаете его между @implementation и @end. Можете ли вы опубликовать свой файл .m

person bemshaswing    schedule 01.10.2010