2012-08-16 1 views
0

J'essaie de faire une catégorie adopter un protocole, et j'ai un problème avec ce qui semble être une chose simple.Erreur iOS: "qualificatifs de protocole sans" id "est archaïque" lors de l'adoption du protocole dans une catégorie

La déclaration d'interface est:

@interface UIView (UIViewCategory) <DesiredProtocol> 

Et j'assumait la déclaration de mise en œuvre devrait être le même:

@implementation UIView (UIViewCategory) <DesiredProtocol> 

Mais cela devient un avertissement jaune XCode, avec le message: « Protocole qualificateurs sans 'id' est archaïque ".

Donc, si la déclaration est:

@implementation UIView (UIViewCategory) id<DesiredProtocol> 

??

Je ne trouve pas de référence pour ce problème spécifique. Un grand merci pour toutes les réponses.

Répondre

2

Vous n'avez pas besoin la liste des protocoles sur une @implementation block, que ce soit une catégorie ou non.

@implementation UIView (UIViewCategory) 
... 
@end 
+0

+1 à droite. il est omis sur '@ implementation', tout comme une paire habituelle' @ interface' + '@ implementation' – justin

0

Voici comment vous déclarez un protocole

@protocol ProtocolName <NSObject> 

//protocol methods 

@end 

Plus tard, il est la propriété

@interface ProtocolClass: NSObject 
{...} 
@end 
@property (nonatomic, unsafe_unretained) id <ProtocolName> delegate; 
//Synthesize it! 

Et puis vous l'adopter

@interface ClassThatAdoptsProtocol: NSObject <ProtocolName>{...} 
Questions connexes