Очистка предупреждений «возможно, не отвечает» для UIView и UIViewController - PullRequest
0 голосов
/ 09 апреля 2010

В приложении для iPad я использую пользовательский подкласс UIView с UIViewController. Вот заголовок представления:

@interface pdfView : UIView {
    CGPDFDocumentRef doc;
}

-(void)setDoc:(CGPDFDocumentRef)newDoc;

@end

А вот заголовок контроллера:

@interface iPadPDFTestViewController : UIViewController {
    CGPDFDocumentRef doc;
}

- (void)loadPDF;

@end

Часть реализации контроллера:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadPDF];
    [self.view setDoc:doc];
}

В Интерфейсном Разработчике я установил объект представления для использования класса pdfView.

При компиляции [self.view setDoc:doc]; выдает предупреждение «UIView» может не отвечать на «--setDoc». » Я предполагаю, что это предупреждение появляется, потому что компилятор думает, что смотрит на UIView (который не реализует метод setDoc) вместо pdfView. Но почему это так? И как я могу сказать, на какой класс он действительно смотрит, чтобы убрать предупреждение?

1 Ответ

5 голосов
/ 09 апреля 2010

Компилятор знает только то, что определяет код, а UIViewController определяет его свойство view как UIView, поэтому вы видите предупреждения.

Вы можете избежать предупреждений, приведя представление к вашему PDFView: (PDFView *) self.view;

Чтобы упростить реализацию базового метода получения

- (PDFView *)view {
    return (PDFView *)self.view;
}

Кроме того, как примечание, вы должны действительно назвать свои классы, чтобы они начинались с по крайней мере одного символа в верхнем регистре и в идеале с префикса (то есть PDFView, в идеале MYPDFView (где MY - пользовательский префикс)).

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