加载iOS应用后执行代码

时间:2015-08-21 16:05:48

标签: ios objective-c

我正在构建一个天气应用程序。我有一个函数getAllData:

- (void)getAllData {
    self.tempNowData = [self.getTempLibrary getTempNowData];
    self.iconNowData = [self.getTempLibrary getIconNowData];

    self.tempPlus3Data = [self.getTempLibrary getTempPlus3Data];
    self.iconPlus3Data = [self.getTempLibrary getIconPlus3Data];

    self.tempPlus6Data = [self.getTempLibrary getTempPlus6Data];
    self.iconPlus6Data = [self.getTempLibrary getIconPlus6Data];

    self.tempPlus9Data = [self.getTempLibrary getTempPlus9Data];
    self.iconPlus9Data = [self.getTempLibrary getIconPlus9Data];

    self.tempPlus12Data = [self.getTempLibrary getTempPlus12Data];
    self.iconPlus12Data = [self.getTempLibrary getIconPlus12Data];

    self.tempPlus15Data = [self.getTempLibrary getTempPlus15Data];
    self.iconPlus15Data = [self.getTempLibrary getIconPlus15Data];

    self.tempPlus24Data = [self.getTempLibrary getTempPlus24Data];
    self.iconPlus24Data = [self.getTempLibrary getIconPlus24Data];

    self.cityData  = [self.getTempLibrary city];
}

调用getTempLibrary类,它接受并解析JSON并提供数据。

还有函数setAllData(未完成,只设置一个值):

- (void)setAllData {
    self.tempNow.text = [NSString stringWithFormat:@"%@°C", self.tempNowData];
}

当我用按钮调用此功能时,一切正常。

- (IBAction)refreshButton:(id)sender {

    [self getAllData];
    [self setAllData];
}

当我将相同的代码添加到viewDidLoad时,它显示纬度0和经度0的温度。我在viewDidLoad中检查GPS位置。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.getTempLibrary = [[GetTemp alloc] init];
    [self.getTempLibrary getCurrentLocation];
    [self getAllData];
    [self setAllData];

}

我认为现在采取GPS定位还为时尚早,但是当我通过按钮调用功能时,它可以工作(显示正确的温度)。

1 个答案:

答案 0 :(得分:0)

不要这样做。请改用 NSOperationQueue

为TempNow,TempPlus等创建 NSOperation (s)。在队列中添加这些操作,让它以异步方式下载。您的方法需要通过以下方式推广:)

PS:如果TempNow,TempPlus等之间没有依赖关系,则可以使用 GCD