我正在构建一个天气应用程序。我有一个函数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定位还为时尚早,但是当我通过按钮调用功能时,它可以工作(显示正确的温度)。
答案 0 :(得分:0)
不要这样做。请改用 NSOperationQueue 。
为TempNow,TempPlus等创建 NSOperation (s)。在队列中添加这些操作,让它以异步方式下载。您的方法需要通过以下方式推广:)
PS:如果TempNow,TempPlus等之间没有依赖关系,则可以使用 GCD 。