Problem mit Programm auf Seite 103 (Buch:Objective-C und Cocoa)

  • Problem mit Programm auf Seite 103 (Buch:Objective-C und Cocoa)

    Hallo
    Habe leider wieder ein Problem.Habe diesmal mir ein deutschsprachiges Buch über die Cocoa Programmierung ausgeliehen und habe schon beim zweiten Programm schoon wieder einen Fehler obwohl ich alles so gemacht habe wie es im Buc h steht.Hier ich texte mal den Code:
    instrument.h von Klasse Instrument:

    Quellcode

    1. #import <Cocoa/Cocoa.h>
    2. @interface Instrument : NSObject {
    3. NSString *Name;
    4. int Preis;
    5. int Alter;
    6. }
    7. - (void)setName:(NSString *)cName;
    8. - (int)setPreis:(int)cPreis;
    9. - (int)setAlter:(int)cAlter;
    10. - (NSString *)printData;
    11. @end
    Alles anzeigen

    Instrument.m von Klasse Instrument:

    Quellcode

    1. #import "Instrument.h"
    2. @implementation Instrument
    3. -(void)setName: (NSString *)cName
    4. {
    5. NSLog(@"Methode %@ von Objekt \"%@\" aufgerufen",
    6. NSStringFromSelector(_cmd), cName);
    7. }
    8. -(int)setPreis:(int)cPreis;
    9. {
    10. NSLog(@"Methode %@ von Objekt \"%@\" aufgerufen",
    11. NSStringFromSelector(_cmd), Name);
    12. Preis = cPreis;
    13. }
    14. -(int)setAlter:(int)cAlter;
    15. {
    16. NSLog(@"Methode %@ von Objekt \"%@\" aufgerufen",
    17. NSStringFromSelector(_cmd), Name);
    18. Alter = cAlter;
    19. }
    20. -(NSString *)printData
    21. {
    22. NSLog(@"Methode %@ von Objekt \"%@\" aufgerufen",
    23. NSStringFromSelector(_cmd), Name);
    24. NSLog(@"\%@\" - Preis: %i", Name, Preis);
    25. NSLog(@"\%@\" - Alter: %i", Name, Alter);
    26. }
    27. @end
    Alles anzeigen

    und das Hauptprogramm "Klasse":

    Quellcode

    1. #import <Foundation/Foundation.h>
    2. int main (int argc, const char * argv[]) {
    3. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    4. Instrument *klimper [[Instrument alloc] init];//Hier hat er eine Parse error vor init,klimper
    5. //ist undefiniert und dann sogar Instrument //undefiniert
    6. [klimper setName:@"allgemein"];
    7. [klimper setPreis:576];
    8. [klimper setAlter:5];
    9. [klimper printData];
    10. [klimper release];
    11. [pool release];
    12. return 0;
    13. }
    Alles anzeigen


    Wäre ganz toll wenn sich jemand von euch das anschauen könnte.
    Berni
  • Ein Selector ist (sozusagen) ein Verweis auf eine Methode. bei der Funktion NSStringFromSelector() gibt man als Argument einen selektor an (die erstellt man mit "@selector(blabla)"). Dann gibt diese Funktion einen String zurück, der wie diese Methode heist. und _cmd ist der Selektor der aktuellen Methode.

    (ich hoffe ich hab jetzt nicht zuviel scheiß erzählt :D)

    PS: das forum hat ja eine Zensierfunktion :) probiert mal aus S c h e i ß zu schreiben (ohne leerzeichen)
  • hanswurst:
    So eine Scheiße, du hast recht.
    Scheißdreck. :D
    Echt ein Scheiß, wa?

    Meiner Ansicht nach hast du das übrigens richtig erzählt.

    btw, wo ich deinen Avatar sehe: wir sind nicht nur Aufsteiger sondern auch gleich noch Meister. ^^
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Original von Lucas de Vil
    btw, wo ich deinen Avatar sehe: wir sind nicht nur Aufsteiger sondern auch gleich noch Meister. ^^


    Total Offtopic: Das wird eine tolle Saison: Köln, Aachen, Mainz, Pauli ... wen interessiert da noch die 1. Liga?

    Alex
    The only thing that really worried me was the ether.
  • RE: Problem mit Programm auf Seite 103 (Buch:Objective-C und Cocoa)

    obwohl ich alles so gemacht habe wie es im Buc h steht

    Nein, du hast zahlreiche Sachen geändert. Davon abgesehen:

    a) Zu allem Überfluss hast du dich nicht an die Regeln auf Seite 100 Mitte gehalten.
    b) Das Programm wird auf Seite 111 gestartet, weil es dort fertig ist (siehe letzten Absatz). Davor findet sich die Erweiterung des Hauptprogrammes (S. 111 oben).
    c) cocoading.de/Buch/Errata.html
    d) Ich halte es mit Dürrenmatt, was BUCHAUSLEIHER angeht. ;) (Grieche sucht Griechin, Extra-Kapitel)

    <Identität>
    Amin Negm-Awad
    </Identität>
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Wobei ich "Verweis auf eine Methode" nicht ganz richtig finde, da sich Selektoren polymorph verhalten. Eher ein Verweis auf eine Nachricht.

    "Echte" Verweise auf Methoden haben den Typen IMP.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Wobei ich "Verweis auf eine Methode" nicht ganz richtig finde, da sich Selektoren polymorph verhalten. Eher ein Verweis auf eine Nachricht.

    "Echte" Verweise auf Methoden haben den Typen IMP.


    Rischtisch. Ein Selektor ist noch nicht an ein bestimmtes Objekt gebunden. Daher kann ich auch verschiedene Objekte Fragen, ob sie mit diesem Selektor etwas anfangen können.

    Alex
    The only thing that really worried me was the ether.