Dans une application pour iPad, j'utilise une sous-classe personnalisée de UIView avec UIViewController. Voici l'en-tête de vue:Effacement des avertissements "ne répond pas" pour UIView et UIViewController
@interface pdfView : UIView {
CGPDFDocumentRef doc;
}
-(void)setDoc:(CGPDFDocumentRef)newDoc;
@end
Et voici l'en-tête du contrôleur:
@interface iPadPDFTestViewController : UIViewController {
CGPDFDocumentRef doc;
}
- (void)loadPDF;
@end
Une partie de la mise en œuvre du contrôleur:
- (void)viewDidLoad {
[super viewDidLoad];
[self loadPDF];
[self.view setDoc:doc];
}
Dans Interface Builder, j'ai mis l'objet en vue de utilise la classe pdfView.
compilation A, [self.view setDoc:doc];
donne l'avertissement "UIView» ne peut pas répondre à '--setDoc'." Je devine que cet avertissement apparaît parce que le compilateur pense qu'il regarde UIView (qui n'implémente pas la méthode setDoc) au lieu de pdfView. Mais pourquoi pense-t-il cela? Et comment puis-je dire à quelle classe il regarde vraiment, de manière à effacer l'avertissement?
Pour un traitement plus approfondi du point important de @ dannywartnaby sur le préfixage des noms de classe dans Objective-C pour éviter les collisions d'espaces de noms: http://stackoverflow.com/questions/178434/what-is-the-best-way-to- solve-an-objective-c-namespace-collision –
Merci! Cela a fonctionné comme un charme. Votre explication a été très utile - je vois maintenant que le compilateur obtient ses informations de type à partir de la définition de la propriété 'view'. Ce que je fais maintenant est ceci: '[(PDFView *) self.view setDoc: doc];' – rlkw1024