在Objective-C中用Singleton声明全局变量



我正在寻找在所有类中全局存储和读取变量的最佳方式。我知道我可以使用"singleton",但我不确定这是否是存储变量的最佳方法,也不确定如何做到这一点?

我使用singleton,下面是我的操作方法:

创建一个新的类,对于这里的演示,我们将其命名为MyDataModel。在MyDataModel.h中执行以下操作:

#import <Foundation/Foundation.h>
@interface MyDataModel : NSObject
{
    NSString *myStringVariable;
    NSUInteger myIntVariable;
    //add any variables you need
}
@property (nonatomic, retain) NSString *myStringVariable;
@property (nonatomic) NSUInteger myIntVariable;
+ (MyDataModel *) sharedInstance;
@end

现在在MyDataModel.mdo:中

#import "MyDataModel.h"
@implementation MyDataModel
@synthesize myStringVariable, myIntVariable;
static MyDataModel *_sharedInstance;
+ (MyDataModel *) sharedInstance
{
    if(!_sharedInstance)
    {
        _sharedInstance = [[MyDataModel alloc] init];
    }
    return _sharedInstance;
}
@end

现在,在任何想要使用这个singleton的类中,都必须#import这个类,下面是如何使用变量:

[MyDataModel sharedInstance].myStringVariable = @"anyThing";
[MyDataModel sharedInstance].myIntVariable = 123;

我希望这能为你澄清一些事情。

您可以使用NSUserDefaults、AppDelegate中的Variables(不建议使用)或singleton。我总是在我的应用程序中创建一个singleton来存储各种变量和方法。

相关内容

  • 没有找到相关文章

最新更新