Cannot find protocol declaration for delegate

Bonjour,



J'ai crée un delegate et quand je l'ajoute dans l'interface de la classe qui l'appelle j'obtiens
<br />
@protocol HoursSelectorDelegate<br />
-(void)HoursSelector:(HoursSelector*)hoursSelect didSelectHours:(NSNumber*)selectedHours forParentSelectedRow:(NSIndexPath*)indexPath;<br />
@end<br />




j'obtiens cette erreur
<br />
cannot find protocol declaration for &#39;HoursSelectorDelegate&#39;<br />
<br />

Réponses

  • J'ai rajouté @protocole HoursSelectorDelegate dans la classe qui l'appelle mais j'ai cette fois ci un warning ...
    <br />
    warning: no definition of protocol &#39;HoursSelectorDelegate&#39; is found<br />
    <br />
    
  • zoczoc Membre
    Il manque surement un #import du fichier .h qui contient la définition du protocole dans le fichier .m contenant l'implémentation de la classe...



    Enfin, le truc basique, quoi...
  • Non il ne manque aucun import lol
  • Il manque forcément l'import...
  • GranDavGranDav Membre
    août 2012 modifié #6
    @abc88 d'après ce que tu décris, il semble que tu aies défini ton protocole
    <br />
    @protocol HoursSelectorDelegate<br />
    -(void)HoursSelector:(HoursSelector*)hoursSelect didSelectHours:(NSNumber*)selectedHours forParentSelectedRow:(NSIndexPath*)indexPath;<br />
    @end<br />
    




    dans un fichier (appelons le HoursSelectorDelegate.h) et que dans la classe où tu souhaites l'utiliser (appelons la MaClasse.h) tu aies fait la "chose" suivante :


    <br />
    @protocol HoursSelectorDelegate<br />
    @end<br />
    <br />
    @interface MaClasse : NSObject &lt;HoursSelectorDelegate&gt;<br />
    @end<br />
    




    Pour que cela fonctionne il faut remplacer ton @protocol vide par un import comme le propose zoc et le souligne yoann.



    Voici le code :


    <br />
    #import &quot;HoursSelectorDelegate.h&quot;<br />
    <br />
    @interface MaClasse : NSObject &lt;HoursSelectorDelegate&gt;<br />
    @end<br />
    
  • J'ai mal saisi ce que je dois changer :



    l'import de la classe où se trouve le protocole est déjà  mis dans la classe qui va l'utiliser ??
  • psychoh13psychoh13 Mothership Developer Membre
    août 2012 modifié #8
    Dans ton MyClass.h tu dois écrire ceci:


    <br />
    #import &quot;MySuperClass.h&quot;<br />
    <br />
    @protocol MyClassDelegate;<br />
    <br />
    @interface MyClass : MySuperClass<br />
    @property(nonatomic, weak) id&lt;MyClassDelegate&gt; delegate;<br />
    @end<br />
    <br />
    @protocol MyClassDelegate &lt;NSObject&gt;<br />
    @optional<br />
    - (BOOL)myClass:(MyClass *)sender shouldDoSomethingWithObject:(id)obj;<br />
    @end<br />
    




    dans le MyUserClass.h c'est-à -dire la classe qui va être déléguée de MyClass:


    <br />
    #import &quot;MyClass.h&quot;<br />
    <br />
    @interface MyUserClass : MyUserSuperClass &lt;MyClassDelegate&gt;<br />
    <br />
    @end<br />
    




    Au passage, les noms de tes méthodes doivent commencer par une minuscule. Et n'utilise pas NSNumber* comme argument de méthode, NSNumber et NSValue ne sont utiles que pour stocker des types C quand tu veux les insérer dans une collection comme NSArray, NSDictionary, NSSet ou NSOrderedSet.
  • 'abc88' a écrit:


    J'ai mal saisi ce que je dois changer :



    l'import de la classe où se trouve le protocole est déjà  mis dans la classe qui va l'utiliser ??




    Je n'ai fait que des suppositions dans mon post. Qu'as-tu réellement dans ton code ? Peux-tu nous en montrer plus ?
Connectez-vous ou Inscrivez-vous pour répondre.