Глобальная переменная в программе Objective-C - PullRequest
10 голосов
/ 16 августа 2011

Я хочу сохранить число как глобальную переменную.Какой синтаксис я использую, и как другие части моего приложения могут обращаться к этой переменной?

Ответы [ 6 ]

26 голосов
/ 16 августа 2011

Для стандартной глобальной переменной (не сохраняется, когда приложение завершается и перезапускается), добавьте это в файл заголовка (*. H) на ваш выбор:

extern NSInteger MYGlobalVariable;

Тогдапоместите это в файл реализации; (*. M, * .c, * .cpp) :

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

Это то, как вы делаете глобальную переменную типа «хлеб с маслом».

20 голосов
/ 16 августа 2011

Вы, вероятно, хотите использовать 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];

Кроме того, если у вас есть сложные данные, вы можете создать класс-оболочку с сеттерами и геттерами.

14 голосов
/ 07 декабря 2013

Определите переменную в файле 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);
1 голос
/ 07 декабря 2013

Чтобы создать переменные, которые будут видны всем файлам в 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;

с одинаковыми именами в обоих;)

0 голосов
/ 08 ноября 2016

Чтобы объявить глобальную переменную в target-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
...
}
0 голосов
/ 23 сентября 2014

Для постоянных переменных используйте NSUserDefaults.Это записывается в файл в изолированной программной среде приложения.Для сеансовых переменных (непостоянных) я использую одноэлементный класс со свойством NSMutableDictionary для хранения переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...