Objective-C und Strings/Objekte

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

  • Objective-C und Strings/Objekte

    Hallo,
    ich habe eine Frage zu Objekten am Beispiel Strings...

    Beispiel:

    Quellcode

    1. // [Bsp. 1]
    2. #import <Foundation/Foundation.h>
    3. int main (int argc, const char * argv[]) {
    4. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    5. NSString *myString; // [Z. 1]
    6. myString = @"Hallo!"; // [Z. 2]
    7. NSLog(@"%@", myString); // [Z. 3]
    8. [pool drain];
    9. return 0;
    10. }
    Alles anzeigen


    Es heißt:
    "Wir benutzen einen Zeiger für unsere Zeichenkette, weil in Objective-C Objekte nie direkt verändert werden, sondern nur über auf sie gerichtete Zeiger."
    ...und...
    "Was wir aber für gewöhnlich meinen, wenn wir in Object-C das Wort "Objekt" benutzen ist "Zeiger auf ein Objekt". "

    Ich weiß...:

    Quellcode

    1. // [Bsp. 2]
    2. #import <Foundation/Foundation.h>
    3. int main (int argc, const char * argv[]) {
    4. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    5. int variable = 2; // [Z. 1]
    6. int *zeiger; // [Z. 2]
    7. zeiger = &variable; // [Z. 3]
    8. NSLog(@"%d", *zeiger); // [Z. 4]
    9. [pool drain];
    10. return 0;
    11. }
    Alles anzeigen


    ...dass, wenn der Zeiger ohne das "*" angesprochen wird(Z. 3), die Adresse, und nicht der Inhalt, gemeint ist.
    ...dass, nur wenn der Zeiger mit dem "*" angesprochen wird(Z. 3), der Inhalt gemeint ist.

    Frage:
    Wieso wird der Inhalt des String-Objekts, auf das sich der Zeiger bezieht, definiert, indem die Adresse gesetzt wird?
    Wieso wird der Ihnalt des String-Objekts, auf das sich der Zeiger bezieht, abgefragt, indem die Adresse abgefragt wird...?
    Kurz: Warum verwendet man nicht das "*", wenn man doch den Zeiger benutzen will um auf das richtige Objekt zuzugreifen?

    Denn wenn man die Adresse abspeichert(also den Zeiger ohne "*" benutzt), speichert man doch eigentlich etwas im Zeiger und nicht im Ziel...
    Ist dann nicht der Zeiger der eigentliche String...?
    Wie kann der Zeiger überhaupt auf ein Objekt verweisen, dass vorher nicht deklariert wurde und dessen Adresse ein String ist, der "Hallo!" lautet?!
    Wer schreibt schon Signaturen... Ich brauch' keine Signatur...