wake-up-neo.com

Globale Variablen im Ziel-C-Programm

Ich möchte eine Nummer als globale Variable speichern. Welche Syntax verwende ich und wie können andere Teile meiner Anwendung auf diese Variable zugreifen?

10
Shawn

Für eine globale Standardvariable (nicht persistent beim Beenden und Neustarten der App) fügen Sie diese zu einer Header-Datei (* .h) Ihrer Wahl hinzu:

extern NSInteger MYGlobalVariable;

Dann fügen Sie dies in die Implementierungsdatei ein. (* .m, * .c, * .cpp) :

MYGlobalVariable = 0;  // Or any other default value.

So machen Sie eine globale Variable für Brot und Butter.

26
PeyloW

Sie möchten wahrscheinlich NSUserDefaults dafür verwenden:

Sie können von überall in Ihrem Code einen Wert für einen Schlüssel festlegen:

int userAge = 21; // Just an example

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

if (standardUserDefaults) {
    [standardUserDefaults setObject:[NSNumber numberWithInt:userAge] forKey:@"age"];
    [standardUserDefaults synchronize];
}

Und bekomme es von jedem anderen Ort zurück:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSNumber *age = nil;

if (standardUserDefaults) 
    age = [standardUserDefaults objectForKey:@"age"];

userAge = [age intValue]

Sie können auch einen Anfangswert festlegen:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary
    dictionaryWithObject:[NSNumber numberWithInt:13] forKey:@"age"];

[defaults registerDefaults:appDefaults];

Wenn Sie über komplexe Daten verfügen, möchten Sie möglicherweise eine Wrapper-Klasse mit Setter und Getter erstellen.

20
Julien

Definieren Sie die Variable in der Datei AppDelegate.h. Erstellen Sie eine Eigenschaft in der .h-Datei

@property (retain, nonatomic) NSString *str;

Dann synthetisieren Sie in der AppDelegate.m-Datei.

@synthesize str;

Definieren Sie später eine Variable in Ihrer Projektdatei prefix.pch

#define DELEGATE ((AppDelegate*)[[UIApplication sharedApplication]delegate])

Nutzen Sie den Wert überall in Ihrem Projekt

AppDelegate *a = DELEGATE;
a.str = @"value";
NSLog(@"value of variable str : %@",a.str);
13
Raviraj Jadeja

So erstellen Sie Variablen, die von allen Dateien in Objective C angezeigt werden

sie möchten zum Beispiel einmal Ihre Basis-URL festlegen und in jeder Klasse fügen Sie zusätzliche Zeichenfolgen hinzu.

gehen Sie zur Datei "main.m", da dies der Ort ist, an dem die gesamte App sie sehen wird.

NSString *baseurl = @"staging.nabdanet.com";

int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

und wenn Sie auf diese Klasse zugreifen möchten, müssen Sie Folgendes tun:

SomeClass.m

extern NSString *baseurl;

mit dem gleichen Namen in beiden;)

1
Abo3atef

Verwenden Sie für persistente Variablen NSUserDefaults. Dies wird in eine Datei in der App-Sandbox geschrieben. Für Sitzungsvars (nicht persistent) verwende ich eine Singleton-Klasse mit einer NSMutableDictionary-Eigenschaft zum Speichern von Variablen.

0
Ron

Um eine globale Variable in Objective-C oder Swift zu deklarieren, deklarieren Sie sie einfach außerhalb des Gültigkeitsbereichs einer Klasse/Schnittstelle.

Ziel c:

#import "headerFile1.h"
#import "headerFile2.h"

BOOL isTrue = true;
int x = 1;

@interface exampleInterface (){
...  
}
@end

@implementation exampleClass
...

isTrue= false; // can be used in the same way anyplace in your code
x=3; // anyplace means anyplace, even from other controllers
@end

Swift:

import UIKit

var x=45;

class SomeClass {
... 
x=0; // This is also available from anyplace in your project
...
}
0
Loukan ElKadi