2012-04-02 12 views
0

Ich habe jedes Beispiel in Bezug auf Singleton, öffentliche und globale Variablen in Stack-Überlauf zu diesem Thema gesucht und versucht. Ich mache irgendwo einen Fehler. Ich habe eine Einstellungsvariable namens strIP, die Teil eines textField ist und in meinem secondViewController.h deklariert ist. Ich möchte, dass diese Variable in einer Klasse namens myWSupdate.m verwendet wird. Es ist nur eine Variable, die ich an eine Verbindungszeichenfolge übergeben möchte. Dies kompiliert korrekt, aber die App stürzt beim Ausführen ab. Was mache ich falsch?Singleton, public oder globale Variablen verwenden

Fehler von complier: Beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '+ [SecondViewController sharedip]: Unbekannter Selektor zur Klasse 0x6403c gesendet'

secondViewController.h

@interface SecondViewController : UIViewController 
{ 
UITextField *ipAdd; 

NSString *strIP; 

} 
@property (nonatomic, retain) IBOutlet UITextField *ipAdd; 
@property (retain) NSString *strIP; 

+(SecondViewController*)sharedIP; 

dann I nennen es in myWSupdate.m:

#import "SecondViewController.h" 

/* Implementation of the service */ 

@implementation myWSupdate 

- (id) init 
{ 
    if(self = [super init]) 
    { 

     SecondViewController* IP = [[SecondViewController sharedIP]init]; 
NSLog(@"the test has %@", IP.strIP); 
    } 
} 


@end 
+1

Was ist die Frage? – Odys

+0

Ich bekomme immer einen Fehler von "Verwendung von nicht deklarierten Bezeichner 'strIP'." In myWSupdate.m Was fehlt mir? – iDev

+0

Weil strIP ein Mitglied von SecondViewController ist und Sie versuchen, in einer Methode von myWSupdate darauf zuzugreifen? – Almo

Antwort

2

Seit strIP zu einem SecondViewController gehört, müssen Sie verweisen es als Teil dieses Objekts wahrnehmen.

Wie man das macht, hängt von der Beziehung zwischen SecondViewController und myWSupdate ab. (Zum Beispiel, wenn der Controller ein myWSupdate Objekt erstellt, können Sie die Variable als Teil des init übergeben.)

Die Tatsache, dass es öffentlich markiert ist nicht die Tatsache ändern, dass es ein Instanz variabel und daher Bedürfnisse in Verbindung mit einer Instanz seiner Klasse verwendet werden.