这个问题已经在这里有了答案:




已关闭8年。






我有一些全局对象(几乎在所有“应用程序屏幕”中使用),大多数情况下是在应用程序启动后立即创建的。我希望可以从我所有的ViewControllers访问该对象(没有其他东西,只有ViewControllers)。存放在哪里?

我考虑了@property中的AppDelegate,但我认为(但我可能错了),这是一个丑陋的解决方案。

对象可能相当复杂,这不是简单的类型。

最佳答案

通过将全局对象放置在具有访问全局对象的类方法的类中,实现+(void)load以准备这些对象并将它们存储在静态变量中,可以使全局对象可访问。

header :

@interface GlobalObjects
+(void)load;
+(MyObject1*)myObject1;
@end

执行:
#import "GlobalObjects.h"
static MyObject1* _myObject1 = nil;
@implementation GlobalObjects
+(void)load {
    _myObject1 = [[MyObject1 alloc] init];
}
+(MyObject1*)myObject1 {
    return myObject1;
}
@end

用法:
MyObject1 *shared = [GlobalObjects myObject1];

您还可以在变量的方法内部将其设置为静态,以进行延迟初始化。

09-25 17:32