使类变量在应用程序中全局化



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

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

@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 实际上是类的,所以我们可以这样做:)希望这有帮助。

当然可以,但是在整个应用程序中使用全局变量绝对是破坏的架构设计。

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

MyVeryOwnClass *g_MyVeryOwnClassPointer = nil;

并作为以下方式访问它:

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

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

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

相关内容

  • 没有找到相关文章