Я хочу сохранить число как глобальную переменную. Какой синтаксис я использую, и как другие части моего приложения могут получить доступ к этой переменной?
Глобальная переменная в программе Objective-C
Ответ 1
Для стандартной глобальной переменной (не стойкой, когда приложение завершается и перезапускается) добавьте это в заголовочный файл (*.h) по вашему выбору:
extern NSInteger MYGlobalVariable;
Затем поместите это в файл реализации; (*.m, *.c, *.cpp):
MYGlobalVariable = 0; // Or any other default value.
Вот как вы делаете глобальную переменную хлеб и масло.
Ответ 2
Вы, вероятно, захотите использовать NSUserDefaults для этого:
Из любого места вашего кода вы можете установить значение для ключа:
int userAge = 21; // Just an example
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:[NSNumber numberWithInt:userAge] forKey:@"age"];
[standardUserDefaults synchronize];
}
И верните его из любого другого места:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSNumber *age = nil;
if (standardUserDefaults)
age = [standardUserDefaults objectForKey:@"age"];
userAge = [age intValue]
Вы также можете установить начальное значение:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary
dictionaryWithObject:[NSNumber numberWithInt:13] forKey:@"age"];
[defaults registerDefaults:appDefaults];
Кроме того, если у вас есть сложные данные, вы можете создать класс-оболочку с сеттерами и получателями.
Ответ 3
Определите переменную в файле AppDelegate.h. Создайте свойство в файле .h
@property (retain, nonatomic) NSString *str;
Затем синтезируется файл AppDelegate.m;
@synthesize str;
Позже определите переменную в файле проекта prefix.pch
#define DELEGATE ((AppDelegate*)[[UIApplication sharedApplication]delegate])
Используйте значение в любом месте проекта
AppDelegate *a = DELEGATE;
a.str = @"value";
NSLog(@"value of variable str : %@",a.str);
Ответ 4
Чтобы сделать переменные, которые могут видеть все файлы в Objective c
например, вы хотите установить свой базовый url один раз и в каждом классе вы добавите к нему дополнительные строки,
перейдите в файл main.m, потому что это место, которое увидит это приложение. затем вне основной функции, поместите свой базовый url
NSString *baseurl = @"staging.nabdanet.com";
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
и когда вы хотите получить доступ к этому классу, все, что вы будете делать, это,
SomeClass.m
extern NSString *baseurl;
с тем же именем в обоих;)
Ответ 5
Для постоянных vars используйте NSUserDefaults. Это записывается в файл в песочнице приложений. Для сессионных варов (non-persistent) я использую singleton-класс с свойством NSMutableDictionary для хранения переменных.
Ответ 6
Чтобы объявить глобальную переменную в objective-C или Swift, вы просто объявляете ее вне области действия любого класса/интерфейса.
Objective-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
...
}