目前我在-(void)viewDidLoad
中使用两个函数时遇到问题,这两个函数都使用NSUrlRequest
将HTTPPost
发送到网络服务来接收数据。
它工作得很好,直到[self bar]
完全结束后[self foo]
决定开始。那么,在启动[self foo]之前,是否有任何智能方法可以检查[self bar]
是否完全完成?
-(void)viewDidLoad{
[self foo]; // initiates a nsxmlparsercall to a webservice to get values.
[self bar]; // relies on the values recieved from [self foo] to make it's own call.
/* However, [self bar] always crashes before initiating it's request.
/* It crashes when the variables that are being sent with the poststring
/* are being set, as they are null.
/* Which means that the `[self foo]` doesnt get completed before starting [self bar];
}
此时我可能会非常离开,我甚至考虑重写-(void)viewDidload
并设置一个bool来控制何时可以触发第二个函数,但这似乎是超级糟糕的编码..
任何有关如何指导我正确方向的建议和/或提示都将受到高度赞赏。提前致谢。
答案 0 :(得分:1)
我最好放置你的函数将是nsxmlparser
的委托方法之一
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
[self bar];
}
如果要在后台线程上解析响应,这很好,如果在主线程或后台线程上调用功能栏也无关紧要。
但是如果你想在主线程上专门调用bar函数,那么你可以使用这个函数
[self performSelectorOnMainThread:@SEL(bar) withObject:nil waitUntilDone:YES];
答案 1 :(得分:0)
你的意思是在[self foo]函数中你要解析一些东西,当它被完全解析然后你想调用[self bar];功能对吗?
好的,然后你可以在解析完成时发出通知。通过此通知,您可以调用所需的方法。