0

我有一个工作正常的选项卡栏应用程序,但如果应用程序在没有在后台运行的情况下打开,那么选项卡的打开速度会比平时慢一些,因为它们正在加载 plist。

应用程序启动时是否可以将所有数据加载到视图中?

4

1 回答 1

1

我建议使用所有视图控制器都可以查询的服务类。定义此类帮助器类的常用方法是使用单例设计模式。单例模式只允许实例化单例类的一个实例。使用此方法,您知道将使用此服务的所有其他实例都将通过这个实例。

这是我通常使用的片段,它可能不是最佳的,所以我邀请其他用户提出更改建议:

//.h:

+ (MySingletonServiceInstance *)sharedInstance;

//.m:

static MySingletonServiceInstance *sharedInstance = nil;

+ (MySingletonServiceInstance *)sharedInstance{
    @synchronized(self){
        if(sharedInstance == nil)
            sharedInstance = [[self alloc] init];
    }
    return sharedInstance;
}

- (id)init {    
    if ((self = [super init])) {
        //Set up
    }
    return self;
}

现在在任何其他类(例如需要一些数据的视图控制器)中,您可以执行以下操作:

[[MySingletonServiceInstance sharedInstance] doSomething];

或者

NSDictionary *myData = [MySingletonServiceInstance sharedInstance].data;

它会调用同一个对象。我经常使用单例对象来加载数据等,无论它是 Web 服务的接口还是本地 CoreData 的接口。这是一个非常有用的设计模式,我通过学习它学到了很多东西。

于 2013-01-07T22:24:52.763 回答