Ich verstehe, dass das Platzieren des Worts extern
vor einer Variablendeklaration in einer Headerdatei das Vorhandensein einer globalen statischen Variable deklariert, ohne sie zu initialisieren. Ich verstehe auch, dass, wenn ich die Datei importiere, die die extern
Variablen enthält, ich sie ohne einen Klassen-/Dateinamen verweisen kann. Aber wo definiert man sie und ihre Werte?Äquivalent von öffentlichen statischen Endvariablen
Was ich versuche, ist eine Klasse von Konstanten mit globalen Konstanten, die ich im Code einer iOS-Anwendung verwenden möchte.
Setzt man sie so in die Schnittstelle ein?
Example.h
#import <Foundation/Foundation.h>
@interface Constraints : NSObject
{
extern NSString * const PREFS_NAME;
}
Oder hat eine Put dann außerhalb der Schnittstelle wie diese
Example.h
#import <Foundation/Foundation.h>
extern NSString * const PREFS_NAME;
@interface Constraints : NSObject
{
}
dann bei der Umsetzung .m-Datei Wie würde man die externen Werte initialisieren?
Im Implementierungsbereich so?
Example.m
#import "Constraints.h"
@implementation Constraints
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@end
Oder sie so außerhalb des Implementierungsbereich initialisiere:
Example.m
#import "Constraints.h"
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@implementation Constraints
@end
Oder stelle ich ihnen ihre Anfangswerte in einem Konstruktor? oder irgendeine willkürliche statische Methode mit +
davor, d.h. +(void) setAppConstraints
;
Ich habe mehrere Kombinationen ausprobiert, aber immer auf Fehler stoßen, wie "Neudefinition von 'xVariable' mit einem anderen Typ". Oder etwas über "extern hat keine Initialisierungsschnittstelle" (oder so etwas, das ich vergesse). Also möchte ich wissen, wie man sie richtig deklariert und initialisiert, um die gleiche Rolle wie public static final
Variablen in Java zu bilden.
Auch was sind die Grenzen des Befehls extern
? Ich weiß, ich kann extern
ein NSInteger
oder NSString
, aber was ist mit NSArray
?
Ich stelle diese Frage, weil es zu viele irreführende oder unvollständige Informationen bezüglich der Verwendung von extern
in Objective-C zu geben scheint. Viele der Antworten scheinen spekulativ zu sein. Ich hoffe, dass diese Frage nicht nur für mich eine gute Ressource ist, sondern weitere ähnliche Fragen zu den Grundlagen von extern
zu begrenzen.
möglich Duplikat von [Verwendung von 'extern' Schlüsselwort beim Definieren der Variablen] (http://stackoverflow.com/questions/7606909/use-of-extern-keyword-while-defining-the-variable) –
Wenn Sie möchte "eine Klasse von Konstanten erstellen", die nichts mit globalen Variablen zu tun hat, weil sie keiner Klasse angehören. Dafür brauchst du Ivars. –
@Josh Cashwell möglich ist eine ähnliche Frage. Aber wie ich in meinem Fragetext gesagt habe, waren alle Antworten, die ich zu S/O fand, unvollständig oder hinterließen mehr Fragen als Antworten. –