Anfängerfrage
Sorry, Ihr Profis da draußen, wenn ich wahrscheinlich die total nervige Anfängerfrage stelle, aber ich drehe mich im Kreis und alle meine Bücher, Internetrecherchen bringen mir keine Antwort. Das bestätigt meinen Verdacht, dass ich irgendwas ganz und gar nicht kapiert habe in Objective C. Deshalb bitte ich nun hier um Gnade und natürlich einen inspirierenden Impuls.
Mein Problem in Kürze: Wie kann ich während der Laufzeit meiner App auf ein selbst instanziertes Objekt einer selbst erstellten Klasse von allen möglichen Stellen aus zugreifen (außerhalb der Methode, mit der ich das Objekt erstellt habe).
Das Problem im Detail:
Meine eigene Klasse:
Alles anzeigen
Dazu die passende Implementierung:
Alles anzeigen
So weit so gut, ich kann nun auch ein Objekt erstellen im ViewController, aber was ich nicht kann, ist auf dieses Objekt dann auch zugreifen und zwar von außerhalb der Methode, mit der ich es erstellt habe.
Zunächst die Einbindung mit @class in die Header-Datei:
Dann die Implementierung (incl. Objekterstellung in der Methode „viewDidLoad“)
Alles anzeigen
Sobald ich von außerhalb dieser Methode auf das Objekt „myObjektOfClass01“ zugreifen möchte bekomme ich ein „nil“. Das ist das Prinzip der Verkapselung, habe ich schon verstanden, aber wie kann man dann beispielsweise in einer anderen Methode z.B. die Daten manipulieren, wenn sie gar nicht im Zugriff sind.
Eine Antwort, die ich im Internet gefunden hatte, war „Instanzvariablen“, aber wenn ich im Interface eine gleichnamige Variable deklarieren will (myObjektOfClass01), dann bekomme ich in der Methode „viewDidLoad“ einen Hinweis „local declaration of instance hides ...“
Uns so drehe ich mich im Kreis und bitte um Hilfe !
Vielen Dank an alle, die sich bemühen, meinem Horizont entsprechend zu antworten: Ich bin seit zwei Wochen als Hobbyprogrammierer mit Xcode beschäftigt, habe Erfahrungen mit Visual Basic, aber auch das ist lange her.
Sorry, Ihr Profis da draußen, wenn ich wahrscheinlich die total nervige Anfängerfrage stelle, aber ich drehe mich im Kreis und alle meine Bücher, Internetrecherchen bringen mir keine Antwort. Das bestätigt meinen Verdacht, dass ich irgendwas ganz und gar nicht kapiert habe in Objective C. Deshalb bitte ich nun hier um Gnade und natürlich einen inspirierenden Impuls.
Mein Problem in Kürze: Wie kann ich während der Laufzeit meiner App auf ein selbst instanziertes Objekt einer selbst erstellten Klasse von allen möglichen Stellen aus zugreifen (außerhalb der Methode, mit der ich das Objekt erstellt habe).
Das Problem im Detail:
Meine eigene Klasse:
Quellcode
- // RH_myClass01.h
- #import <Foundation/Foundation.h>
- @interface RH_myClass01 : NSObject
- // zwei Instanzvariablen als properties
- @property NSString *myClass01String;
- @property int myClass01Integer;
- // eine Methode, die einen int-Wert mit 100 multipliziert und zurückgibt
- - (int) multiply: (int) anyInteger;
- @end
Dazu die passende Implementierung:
Quellcode
- // RH_myClass01.m
- #import "RH_myClass01.h"
- @implementation RH_myClass01
- // zwei Instanzvariablen als properties
- @synthesize myClass01String;
- @synthesize myClass01Integer;
- // eine Methode, die den int-Wert mit 100 multipliziert und zurückgibt
- - (int) multiply: (int) anyInteger {
- return anyInteger * 100;
- }
- @end
So weit so gut, ich kann nun auch ein Objekt erstellen im ViewController, aber was ich nicht kann, ist auf dieses Objekt dann auch zugreifen und zwar von außerhalb der Methode, mit der ich es erstellt habe.
Zunächst die Einbindung mit @class in die Header-Datei:
Dann die Implementierung (incl. Objekterstellung in der Methode „viewDidLoad“)
Quellcode
- // RH_ViewController.m
- #import "RH_ViewController.h"
- #import "RH_myClass01.h"
- @interface RH_ViewController ()
- @end
- @implementation RH_ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- RH_myClass01 *myObjektOfClass01 = [[RH_myClass01 alloc] init];
- myObjektOfClass01.myClass01String = @"Teststring";
- myObjektOfClass01.myClass01Integer = 5;
- }
Sobald ich von außerhalb dieser Methode auf das Objekt „myObjektOfClass01“ zugreifen möchte bekomme ich ein „nil“. Das ist das Prinzip der Verkapselung, habe ich schon verstanden, aber wie kann man dann beispielsweise in einer anderen Methode z.B. die Daten manipulieren, wenn sie gar nicht im Zugriff sind.
Eine Antwort, die ich im Internet gefunden hatte, war „Instanzvariablen“, aber wenn ich im Interface eine gleichnamige Variable deklarieren will (myObjektOfClass01), dann bekomme ich in der Methode „viewDidLoad“ einen Hinweis „local declaration of instance hides ...“
Uns so drehe ich mich im Kreis und bitte um Hilfe !
Vielen Dank an alle, die sich bemühen, meinem Horizont entsprechend zu antworten: Ich bin seit zwei Wochen als Hobbyprogrammierer mit Xcode beschäftigt, habe Erfahrungen mit Visual Basic, aber auch das ist lange her.
Meine Signatur:
Wir sehen die Welt nicht wie sie ist,
sondern wie wir sind !
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von LukeSideWalker ()