Äquivalent öffentliche statische Finale Variablen

Ich verstehe, dass Sie das Wort extern vor einer Variablen-Deklaration in einer header-Datei deklariert die Existenz einer globalen static-variable ohne Initialisierung es. Ich verstehe auch, dass wenn ich importieren Sie die Datei mit der extern Variablen, kann ich Sie verweisen, ohne eine Klasse/Datei-Namen. Aber wo findet man diese definieren und Ihre Werte?

Was ich versuche zu tun ist, erstellen Sie eine Klasse mit Konstanten Globale Konstanten, die ich verwenden möchten, die in der gesamten iOS-Anwendung code.

Wird man Sie in der Benutzeroberfläche?

Beispiel.h

#import <Foundation/Foundation.h>
@interface Constraints : NSObject
{

extern   NSString * const PREFS_NAME;

}

Oder ist man dann außerhalb der Schnittstelle, wie diese

Beispiel.h

#import <Foundation/Foundation.h>

extern   NSString * const PREFS_NAME;    

@interface Constraints : NSObject
{

}

Dann in die Umsetzung .m-Datei, wie man Sie initialisieren die Werte extern?

Innerhalb der Umsetzung Gegend wie dieser?

Beispiel.m

#import "Constraints.h"

@implementation Constraints

/**PRefecences name for the application**/
const  NSString * PREFS_NAME = @"MyApp_Prefs";

@end

Tun oder initialisieren Sie Sie außerhalb der Umsetzung Gegend wie diese:

Beispiel.m

#import "Constraints.h"

/**PRefecences name for the application**/
const  NSString * PREFS_NAME = @"MyApp_Prefs";

@implementation Constraints

@end

Oder muss ich Ihnen Ihre ursprünglichen Werte in einen Konstruktor? oder einige beliebige statische Stil Methode mit + vor es also +(void) setAppConstraints;

Ich habe versucht, mehrere Kombinationen, aber immer Fehler auftreten, wie "Neudefinition von 'xVariable' mit einer anderen Art". Oder etwas über "extern nicht über eine "Schnittstelle initialisieren" (oder so ähnlich, habe ich vergessen). Ich will also wissen, wie zu declaire und initialisieren Sie Sie richtig zu bilden, die gleiche Rolle wie public static final Variablen in Java.

Auch, was sind die Grenzen der extern Befehl? Ich weiß, ich kann extern eine NSInteger oder NSString, aber was NSArray?

Ich Stelle diese Frage, weil es scheint, zu viel irreführende oder unvollständige Informationen über den Einsatz von extern in Objective-C. Viele der Antworten scheinen speculatory. Meine Hoffnung ist, für diese Frage eine gute Ressource, nicht nur für mich, aber zu begrenzen und weitere ähnliche Fragen über die Grundlagen der extern.

  • mögliche Duplikate von die Verwendung von "extern" Schlüsselwort bei der Definition der variable
  • Wenn Sie auf "erstellen Sie eine Klasse der Konstanten", das hat nichts zu tun mit globalen Variablen, denn Sie gehören nicht zu einer Klasse. Sie müssen ivars für, die.
  • Cashwell möglich sein eine ähnliche Frage. Aber wie ich bereits in meiner Frage, der text, die Antwort auf alle Fragen fand ich auf S/O unvollständig waren, oder Links mehr Fragen als Antworten.
  • Caswell, ich will ein weltweit zugänglich Konstante Werte. Das deutet nicht auf iVars mir. Ich glaube, ich könnte ein singleton, aber immer noch nicht erklären wie das sein konnte, erreicht, mit extern, die mich korrigieren, wenn ich falsch bin, ist eine gültige Fall für den Befehl und eine, die es für entworfen wurde.
  • Ihre Frage hat mehrere Missverständnisse in der es, so finde ich es schwer zu glauben, dass Sie tatsächlich Lesen Sie alle Duplikate, die Sie sagen, Sie gefunden zu haben. Wie für die "Global zugänglich Konstante Werte", wenn es das ist, was Sie wollen, dann wollen Sie nicht eine Klasse.
  • Caswell Bingo, das ich verwenden möchte von extern-also wie?
  • Es ist nicht ein "Befehl".
  • Können Sie dann bitte erklären, was es ist, und warum es immer angedacht als eine sinnvolle alternative Java public static Klassenvariablen.
  • Haben Sie gesehen, diese drei Fragen? Referenz auf ein static NSString const anderen Klasse, Wo verschiedene variable und Methode-Typen sollten in ein header?, Auf verzögerte Instanziierung und convenience-Methoden
  • Caswell ja, Sie waren genau die Art von Artikel, die meinte ich auch. Keiner von diesen erklären, wo in der .m-Datei sollte ich meine initialisieren Variablen exten. Alles, was Sie sagen, ist in der .m-Datei. Sie haben auch nicht meine Frage beantworten, welche Daten-Typen, die ich verwenden kann mit der extern-zum Beispiel arrays erlaubt?

InformationsquelleAutor Andrew S | 2013-02-16
Schreibe einen Kommentar