我想知道是否有人对这个问题有解释/解决方案。我正在使用GData API来获取日历信息并将其存储到NSDictionary中,并在以后访问它。但是当我调用函数来获取数据时,似乎在调用函数后日历访问发生了很多行。
在下面的代码中,我立即调用loadGoogleCalendarEvents,它会进行并获取事件并进行更多处理,但我的应用程序正在“跳过”,添加按钮并执行其后的任何其他操作,然后再进行操作得到日历的东西。
有没有人对此有解释?
- (void)viewDidLoad
{
self.dayDictionary = [NSMutableDictionary dictionary];
[self loadGoogleCalendarEvents];
UIImage* fImage = [UIImage imageNamed:@"facebook_med"];
CGRect fbuttonFrame = CGRectMake(220, 9, 25, 25);
UIButton* fButton = [UIButton buttonWithType:UIButtonTypeCustom];
fButton.frame = fbuttonFrame;
[fButton addTarget:self action:@selector(pushFacebookButton) forControlEvents:UIControlEventTouchUpInside];
[fButton setBackgroundImage:fImage forState:UIControlStateNormal];
[fButton setShowsTouchWhenHighlighted:YES];
UIImage* tImage = [UIImage imageNamed:@"twitter_med"];
CGRect tbuttonFrame = CGRectMake(255, 9, 25, 25);
UIButton* tButton = [UIButton buttonWithType:UIButtonTypeCustom];
tButton.frame = tbuttonFrame;
[tButton addTarget:self action:@selector(pushTwitterButton) forControlEvents:UIControlEventTouchUpInside];
[tButton setBackgroundImage:tImage forState:UIControlStateNormal];
[tButton setShowsTouchWhenHighlighted:YES];
UIButton* aButton = [[UIButton buttonWithType:UIButtonTypeInfoLight] retain];
aButton.frame = CGRectMake(285,9, 25, 25);
[aButton addTarget:self action:@selector(pushAboutButton) forControlEvents:UIControlEventTouchUpInside];
[aButton setShowsTouchWhenHighlighted:YES];
[navBar addSubview:fButton];
[navBar addSubview:tButton];
[navBar addSubview:aButton];
[super viewDidLoad];
}
答案 0 :(得分:1)
iOS上的网络操作通常是异步的。使用GData API实际获取数据的时间很长,在开始获取fetch的调用之后很久就会发生。
在加载日历事件之后需要执行的任何任务都应该在GData提取的回调中完成。一旦提取完成(或失败),将从应用程序的运行循环中调用回调。