Cocoa xcode 4.3 全局变量

Posted

技术标签:

【中文标题】Cocoa xcode 4.3 全局变量【英文标题】:Cocoa xcode 4.3 global variables 【发布时间】:2012-08-07 13:06:39 【问题描述】:

我正在使用全局变量从一个视图控制器访问值到另一个,我面临的问题是在 viewdidload 下调用全局变量它将返回 null,但如果我在 (ibaction) 下使用全局变量它可以正常工作。

【问题讨论】:

您是否尝试从 ViewDidAppear 访问它? @Jayashankar,感谢 ViewDidAppear 提供的提示 【参考方案1】:

问题很可能与求值顺序有关:在viewDidLoad: 时,有问题的变量尚未初始化,但在执行操作时,初始化已完成。

您可以尝试通过从发生在viewDidLoad: 之后的另一个回调访问您的全局来调整时间,但要完全避免这个问题,您可以使用全局单例而不是全局变量。创建一个单独的类,在其中保留全局状态,在需要使用它的地方包含其标题,并调用其类方法来访问全局变量,如下所示:

标题:

@interface Globals
+(MyGlobal*)global;
@end

实施:

@implementation Globals
+(MyGlobal*)global 
    static MyGlobal* _global;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^
        _global = [[MyGlobal alloc] init];
    );
    return _global;

@end

用法:

MyGlobal *g = [Globals global];

【讨论】:

以上是关于Cocoa xcode 4.3 全局变量的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Xcode 将我的所有代码编译两次,导致任何全局变量的链接器错误?

在 Xcode 构建阶段运行脚本中设置全局环境变量

iOS 瓶颈:全局变量与核心数据或属性列表

如何为 xcode 添加全局包含路径

Xcode自带iOS测试方法

调用可以抛出,但错误不能从全局变量初始化器中抛出