@protocol MyViewDelegate <NSObject>
- (void) didFinishProcessing:(MyView*)myView; //compiler stops here with error
@end
@interface MyView : MySuperclass {
id<MyViewDelegate> _delegate;
}
@property (nonatomic, retain) id<MyViewDelegate> delegate;
@end
Когда я пытаюсь скомпилировать, я получаю «expected ')' перед MyView». Где ошибка?Что не так с этим кодом?
отлично, теперь у меня есть еще один вопрос для вас. В чем разница между #import «MyView.h» и @class MyView ;? Я думал, что нет никакой разницы, но очевидно, что есть, потому что, если я просто импортирую класс, он не работает, поэтому мне нужна строка кода, которую вы предоставили. –
Вероятно, у вас есть круговая ссылка. Поскольку протокол опирается на определение MyView, но MyView опирается на определение MyViewDelegate, он, скорее всего, потерпит неудачу. '# import' включает файл, как если бы вы его скопировали и вставляли. '@ class' - определение владельца места. В нем говорится: «Поверьте мне, что этот класс существует, во время связывания вы будете его поправлять, но на данный момент это все, что вам нужно знать». –
Horatiu, @class просто сообщает компилятору не обращать внимания на любую ошибку, связанную с этим классом. #import импортирует содержимое файла, если они еще не были импортированы. В вашем случае вы уже находитесь в этом файле - я считаю, что '#import" MyView.h "внутри" MyView.h "ничего не сделает ... –