2013-02-19 10 views
8
@interface Connections() 
{ 
    static Connections *this; 
} 
@end 

Das obige Stück Code in .m-Datei Fehler Compiler wirftObjective C - Erklärung Fehler - bitte erklären

Typname nicht Lagerklasse nicht zulässt

auf die angegeben werden gleichzeitig, wenn die

statische

Schlüsselwort entfernt es funktioniert gut - was so offensichtlich. Zweck: Ich möchte "Connections" Instanz statisch und privat.

Warum ist dieses Verhalten, bitte helfen.

Antwort

18

Sie können Klassenvariablen in Objective-C-Klassen nicht deklarieren; Stattdessen müssen Sie sie in der Implementierungsdatei "verstecken" und ihnen oft static -scope geben, damit sie nicht extern zugänglich sind.

Connections.m:

#import "Connections.h" 

static Connections *_sharedInstance = nil; 

@implementation Connections 

... 

@end 

Und wenn dies ein Singleton ist, definieren Sie in der Regel eine Klasse-Ebene Accessor die Singleton bei der ersten Verwendung zu erstellen:

+ (Connections *)sharedInstance 
{ 
    if (_sharedInstance == nil) 
    { 
     _sharedInstance = [[Connections alloc] init]; 
    } 
    return _sharedInstance; 
} 

(und Sie werden muss die Deklaration in der .h-Datei hinzufügen):

+ (Connections *)sharedInstance; 
+0

Bedeutung objC Klassen können nur decl. von Ivars, ist es richtig? – Futur

+1

@Futur Ja, das stimmt. – trojanfoe

+0

vielen Dank :) – Futur