我尝试创建一个单例来设置并获取不同视图之间的字符串:
globalVar.h:
@interface globalVar : NSObject
{
NSString *storeID;
}
+ (globalVar *)sharedInstance;
@property (nonatomic, copy) NSString *storeID;
@end
globalVar.m:
#import "globalVar.h"
@implementation globalVar
@synthesize storeID;
+ (globalVar *)sharedInstance
{
static globalVar *myInstance = nil;
if (nil == myInstance) {
myInstance = [[[self class] alloc] init];
}
return myInstance;
}
@end
现在我该如何实际使用字符串?假设我想在一个视图中将其设置为“asdf”并在另一个视图中加载“asdf”。
答案 0 :(得分:5)
要进行设置,请执行以下操作:
[globalVar sharedInstance].storeID = @"asdf";
使用它:
NSString *myString = [globalVar sharedInstance].storeID;
答案 1 :(得分:1)
首先,您需要更改创建实例的方式。这样做:
+ (GlobalVar *)sharedInstance
{
static GlobalVar *myInstance;
@synchronized(self) {
if (nil == myInstance) {
myInstance = [[self alloc] init];
}
}
return myInstance;
}
你不想要使用[self class]
,因为在这种情况下,self
已经是globalVar
类。
其次,您应该使用大写GlobalVar
命名班级G
。
第三,你会像这样使用它:
[GlobalVar sharedInstance].storeID = @"STORE123";
NSLog(@"store ID = %@", [GlobalVar sharedInstance].storeID);