通过应用程序使类变量全局化

时间:2012-10-16 07:28:56

标签: objective-c global-variables

在我的应用程序中,在一些视图控制器中有很多视图控制器,我想在其他类中使用一些变量。我的变量在应用程序委托文件中不存在所以我可以使其全局使用每个位置我的应用程序?

2 个答案:

答案 0 :(得分:1)

在我看来,使用单例模式怎么样?因此,当您想要使用该类的变量时,只需获取实例然后使用变量。

@interface MySingletonViewController : UIViewController
{
  //here your variables
  int globalVariables;
}
@property (nonatomic, assign) int globalVariables;
+ (MySingletonViewController *)sharedSingleton;
@end

@implementation MySingletonViewController
@synthesize globalVariables;
static MySingletonViewController *sharedSingleton = nil;
+ (MySingletonViewController *)sharedSingleton
{
  @synchronized(self)
  {
    if (sharedSingleton == nil)
      sharedSingleton = [[MySingleton alloc] init];

    return sharedSingleton;
  }
}

@end

UIViewController实际上是类,所以我们可以这样做:)希望这有用。

答案 1 :(得分:1)

当然可以,但是通过整个应用程序使用全局变量肯定是破坏了架构设计。

作为基于C的Objective-C,您可以在实现部分之外的任何* .m文件中定义变量(在您的情况下 - 指向类的指针):

MyVeryOwnClass *g_MyVeryOwnClassPointer = nil;

并将其视为:

extern MyVeryOwnClass *g_MyVeryOwnClassPointer;
/* do some operations with your pointer here*/

或者将extern声明移动到头文件。

PS:你可以使用单身人士。它们不是最好的解决方案,但比使用原始变量更好。