Text1 kommt nicht bei putTexttoSecondWindow an.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Text1 kommt nicht bei putTexttoSecondWindow an.

    Folgender Methoden-Aufruf erfolgt:

    Quellcode

    1. [WindowTwo putTexttoSecondWindow: @"Hallo Welt"];


    "Hallo Welt" wird nicht ausgegeben.
    Ich bin blutiger Anfänger :(
    Daher wäre ich sehr dankbar für eine Rückmeldung!
    Hier das gesamte Code:
    #import <Foundation/Foundation.h>
    #import <Cocoa/Cocoa.h>

    Quellcode

    1. @interface connectSecondWindow : NSObject {
    2. NSString *transferText;
    3. }
    4. - (void) putTexttoSecondWindow:(NSString *)text;
    5. - (NSString *) getTexttoSecondWindow;
    6. @end
    7. connectSecondWindow *WindowTwo;
    8. @implementation connectSecondWindow
    9. - (void) putTexttoSecondWindow:(NSString *)text1
    10. {
    11. NSLog(@"Der Text:%@ : %s", [self class], text1);
    12. }
    13. - (NSString *) getTexttoSecondWindow
    14. {
    15. return transferText;
    16. }
    17. @end
    18. int main (int argc, const char * argv[]) {
    19. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    20. // insert code here...
    21. NSLog(@"Hauptprogramm");
    22. WindowTwo = [connectSecondWindow new];
    23. [WindowTwo putTexttoSecondWindow: @"Hallo Welt"];
    24. [pool drain];
    25. return 0;
    26. }
    Alles anzeigen
  • ich bin zwar selbst anfänger, aber was genau willst du denn machen?
    Für mich gibst du nur einen text in der konsole aus.
    Ich gehe mal davon aus du gibst in Fenster 1 einen Text ein und willst ihn in Fenster 2 ausgeben,
    dazu brauchst du ein Eingabefeld in Fenster1 und ein Ausgabefeld (Label) in Fenster2.

    Ich würde folgendes tun:

    IBOutlet NSTextField *text1; (Verbinden mit Eingabefeld)
    IBOutlet NSTextField *text2; (Verbinden mit Ausgabefeld)
    IBAction sendTextToWindow; (Verbinden mit Action)

    -(void)sendTextToWindow
    {
    [text2 setStringValue: [text1 stringValue]]
    }

    das sollte eigentlich der simpelste Code sein der mir so einfällt
  • Hallo Mapple,

    vielen Dank für Deine schnelle Antwort.
    Was ich will?
    In der Tat soll nur ein Text auf der Console ausgegeben werden.
    Das mit folgenden Kommandos:
    WindowTwo = [connectSecondWindow new];
    [WindowTwo putTexttoSecondWindow: @"Hallo Welt"];

    Ich will nur wissen warum "Hallo Welt" nicht auf der Console ausgegeben wird.
    Viele Grüße,
    August
  • Hallo Mapple,

    lass Dich nicht durch die Namen verwirren. Es werden im Programm keine Fenster verwendet. Die sollen später eingebaut werden.
    Es gibt natürlich nur eine Konsole, die mit NSLog angesteuert wird.
    Ich will nur wissen, was ich falsch gemacht habe, da text1 leer ist und NSLog also nur

    2011-01-20 17:13:58.386 secondWindow[639:a0f] Der Text:connectSecondWindow :
    ausgibt. Der Text bleibt leer.

    - (void) putTexttoSecondWindow:(NSString *)text1
    {
    NSLog(@"Der Text:%@ : %s", [self class], text1);
    }

    - (NSString *) getTexttoSecondWindow
    {
    return transferText;
    }
    @end
  • Hallo Thallius,

    danke für den Hinweis: Das mit den Breakpoints ist quasi geschehen:

    In der Main() Funktion wird die Nachricht aufgerufen. In der aufgerufenen Funktion putTexttoSecondWindow ist ein NSLog eingebaut, das auch etwas ausgibt. Die Methode wird definitiv aufgerufen.
    Hast Du sonst noch Ideen?
  • Hallo Claus,

    vielen Dank für die Idee mit NSString!
    Ich habe sie entsprechend umgesetzt: NSLog(@"Der Text:%@ : %@", [self class], text1);
    ... Leider erfolglos. Hast Du vielleicht noch eine Idee?
    Vielen Dank und viele Grüße,
    August
  • august265 schrieb:

    In der Main() Funktion wird die Nachricht aufgerufen. In der aufgerufenen Funktion putTexttoSecondWindow ist ein NSLog eingebaut, das auch etwas ausgibt.

    Was soll Deiner Meinung nach denn noch geschehen? Du rufst da übrigens eine Methode auf, keine Funktion.

    august265 schrieb:

    vielen Dank für die Idee mit NSString!
    Ich habe sie entsprechend umgesetzt: NSLog(@"Der Text:%@ : %@", [self class], text1);
    ... Leider erfolglos.

    Was heißt „Leider erfolglos“? Wird nicht „Der Text:connectSecondWindow : Hallo Welt“ ausgegeben?

    Michael
  • mich irritiert die ganze zeit das [self class].
    Wenn deine Funktion wirklich aufgerufen wird schreib doch einfach mal in die Funktion Methode: (Ihr habt mich schon ganz bekloppt gemacht mit euren Funktionen ^^)

    NSLog(@"test");
    NSLog(@"%@", text1);

    und schau mal ob beides ausgegeben wird

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mapple ()

  • Deine Irritation ist nicht ganz unberechtigt, aber letztlich grundlos. %@ sorgt dafür, dass die Nachricht description an das Objekt geschickt wird. In diesem Falle erhält also das Klassenobjekt die Nachricht description. Da aber NSObject +description implementiert, sollte das gut gehen.
    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"?
  • Hallo Amin,

    ersteinmal vielen Dank! Es lag am formatstring @"%@" vom NSLog.
    Es ist eine große Ehre für mich, dass Du Dich meiner Problemchen annimmst.
    Das meine ich wirklich ehrlich. Schließlich trifft man nicht jeden Tag einen so kompetenten Entwickler.
    Kannst Du mir vielleicht noch sagen warum es nicht mehr läuft wenn man [self class] in NSLog aufnimmt:
    NSLog(@"Der Text:%@ : %@", [self class], text1);

    Nochmals vielen Dank!
  • Wie gesagt: Eigentlich sollte es funktionieren, da +description existiert. Aber ich hatte damit auch schon Probleme. Derweil verwende ich NSStringFromClass( [self class] ).

    Muss ich mich auch mal genauer drum kümmern.
    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"?