数値をグローバル変数として格納したい。使用する構文と、アプリケーションの他の部分からその変数にアクセスする方法を教えてください。
標準のグローバル変数(アプリが終了して再起動したときに永続的ではない)の場合、これをヘッダーファイルに追加します(*。h)選択:
extern NSInteger MYGlobalVariable;
次に、これを実装ファイルに入れます。 (*。m、* .c、* .cpp):
MYGlobalVariable = 0; // Or any other default value.
これがパンとバターのグローバル変数を実行する方法です。
おそらくこれに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];
また、複雑なデータがある場合は、セッターとゲッターを持つラッパークラスを作成することもできます。
変数を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);
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;
両方で同じ名前;)
永続的な変数の場合は、NSUserDefaultsを使用します。これは、アプリのサンドボックス内のファイルに書き込まれます。セッション変数(非永続)の場合、変数を格納するためにNSMutableDictionaryプロパティを持つシングルトンクラスを使用します。
Objective-CまたはSwiftでグローバル変数を宣言するには、クラス/インターフェイスのスコープ外で宣言するだけです。
#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
import UIKit
var x=45;
class SomeClass {
...
x=0; // This is also available from anyplace in your project
...
}