1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Obj-C Protocol implementieren

Dieses Thema im Forum "OS X-Developer" wurde erstellt von nevermind, 02.11.09.

  1. nevermind

    nevermind Bismarckapfel

    Dabei seit:
    19.12.07
    Beiträge:
    142
    Hallo,

    wie ich sehe habt ihr hier im Subforum grad viel zu tun ;), trotzdem kurze frage:

    Code:
    #import <Cocoa/Cocoa.h>
    #import <Foundation/NSXMLParser.h>
    
    @interface MyXMLParserDelegate : NSObject <NSXMLParserDelegate> { // Cannot find protocol declaration
    }
    -(MyXMLParserDelegate *) initWithElementID: (NSString*) e;
    @end
    jetzt steht aber in den docs, NSXMLParserDelegate wäre in NSXMLParser.h definiert, wo liegt der Fehler?

    Danke.
     
  2. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Es ist in NSXMLParser.h deklariert, aber nicht mit der @protocol Direktive, sonder als Kategorie von NSObject. Lass einfach das <NSXMLParserDelegate> weg.

    MacApple
     
  3. nevermind

    nevermind Bismarckapfel

    Dabei seit:
    19.12.07
    Beiträge:
    142
    Danke!

    Funktioniert natürlich, aber: Woher weiss die NSXMLParser Instanz, dass ich ihr ein Objekt als Delegate übergebe, dass das NSXMLParserDelagate Protocol implementiert, wenn ich das nicht deklariere? Dynamic Typing Mystery?
     
  4. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Die NSXMLParser Instanz weiß es einfach nicht. Sie fragt einfach das Delegate Objekt zur Laufzeit, ob es die Delegate Methoden implementiert hat.

    MacApple
     
    nevermind gefällt das.
  5. nevermind

    nevermind Bismarckapfel

    Dabei seit:
    19.12.07
    Beiträge:
    142
    Nice, wie eingebaute java reflection.

    Thx again & grüsse
     
  6. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Die Zeile:

    #import <Foundation/NSXMLParser.h>

    kannst du auch weglassen, denn das Foundation-Framework gehört zu Cocoa, du hast also den Header schon drin (natürlich wird er nur importiert, wenn er gebraucht wird :D).

    Gruss ppocket
     

Diese Seite empfehlen