我的应用程序启动时,是否可以加载所有选项卡的数据?

时间:2013-01-07 20:13:21

标签: ios performance

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

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

1 个答案:

答案 0 :(得分: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的接口。这是一个非常有用的设计模式,我通过挑选它学到了很多东西。