Предыстория: я парень .NET, у которого нет опыта работы с Objective-C / Cocoa, но я работаю над книгой Аарона Хиллегаса "Программирование какао для Mac OS X", пытаясь понять основы. (Отличная книга, кстати!) Для решения одной из дополнительных проблем я пишу приложение на основе документов, которое позволяет пользователям рисовать овалы в произвольных местах.
У меня есть два класса, интерфейсы следующие:
@interface OvalDrawDocument : NSDocument
{
IBOutlet OvalView* myOvalView;
}
@end
@interface OvalView : NSView {
NSMutableArray *ovals;
}
@property (readwrite, assign) NSMutableArray *ovals;
@end
В реализации OvalDrawDocument
я пытаюсь использовать автоматически созданный метод доступа к свойству для ovals
, например, так:
// in OvalView.m
@synthesize ovals;
// in OvalDrawDocument.m
[myOvalView setOvals:loadedOvals]; // setter?
NSMutableArray *ovalsToSave = [myOvalView ovals]; // getter?
Однако компилятор предупреждает меня, что методы не найдены, и они также не работают во время выполнения. Они появляются в Code Sense, но я думаю, что это ничего не значит (все еще привыкаю к различиям между XCode / VS здесь) Я предполагаю, что есть некоторая концепция Obj-C, которую я не совсем уловил, возможно, связанная тот факт, что myOvalView
тоже IBOutlet
, но я довольно растерян. Что мне делать, и, что более важно, почему?
Обновление : я не объявлял OvalView.h в OvalDrawDocument.m. Это исправило предупреждения компиляции. Однако сохранение и загрузка по-прежнему не работают, и я не могу понять, почему.
По запросу я выложил полный исходный код в Интернете для прочтения: Просмотр или Загрузка (59 КБ zip) .