这个问题已经在这里有了答案:
已关闭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];
您还可以在变量的方法内部将其设置为静态,以进行延迟初始化。