在Objective C中创建全局变量和对象

时间:2015-04-02 07:01:19

标签: objective-c iphone

我是Objective-C的新手,并且正在处理一个有多个viewController文件的应用程序。我需要访问在一个文件中设置的变量值才能在其他文件中访问。我该如何实现呢。

我在做什么,我创建了一个类Globals.m并在其中声明了变量。

#import <Foundation/Foundation.h>

@interface Globals : NSObject

@property  NSString*  firstName;
@property NSString* lastName;
@property NSString* emailId;

@end

我的问题是: 1.上述声明会使这些变量保留在不同文件中的值吗?

  1. 我应该在哪里克制一个应该可以访问的这个类的对象 在所有文件中。

1 个答案:

答案 0 :(得分:2)

我可能会建议使用Singleton模式,因为它允许您通过应用程序保存类的实例。因此,您可以在一个类中设置firstName并将其设置在另一个类中。

<强> MySingleton.h

@interface MySingleton : NSObject

// Our properties we want to set.
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSString *emailName;
// etc...

// Our class method for getting the shared instance.
+ (MySingleton *)sharedInstance;

@end

<强> MySingleton.m

#import "MySingleton.h"

@implementation MySingleton

+ (MySingleton *)sharedInstance
{
    static dispatch_once_t pred = 0;
    static id sharedObject = nil;
    dispatch_once(&pred, ^{
        sharedObject = [[self alloc] init];
    });

    return sharedObject;
}

@end

然后在您的其他课程中,您需要做的就是导入MySingleton课程并执行以下操作:

MySingleton *singleton = [MySingleton sharedInstance];
[singleton setFirstName:@"Bob"];

有关单例模式和其他设计模式的更多信息,请参阅iOS Design Patterns中的教程。另外一个好的读物是Correct Singleton Pattern Objective C (iOS)?