我在一个电话和电话中首先有两个功能。我在另一个类中定义了第一个函数。我在其他类中调用该函数。我在自己的类中定义了我的第二个函数。
FirstClass.m 具有 FirstFunction 功能&我在 SecondClass.m 中调用它。
SecondClass.m有 SecondFuncion 功能&我在 SecondClass.m 中调用它。第一个函数使用AFnetworking& amp;从服务器获取数据。给予回应。截至目前,我在 SecondClass.m
中调用此类函数 SecondClass *sec = [[SecondClass alloc]init];
[sec FirstFunction];
[self SecondFunction];
我想在第一个s完成工作时调用第二个函数。但是这里第一个函数是异步的,所以第二个函数不等待第一个函数的响应。请告诉我该怎么做?我可以使用某种监听器所以代码不应该继续进行,它应该等待第一个函数的响应。
答案 0 :(得分:0)
------定义你自己的完成块。
typedef void(^myCompletion)(BOOL);
------创建一个将完成块作为参数的方法。
-(void) myMethod:(myCompletion) compblock
{
//do stuff
compblock(YES);
}
-----这就是你使用它的方式。
[self myMethod:^(BOOL finished)
{
if(finished)
{
NSLog(@"Function execute successfully");
//Call your second Method Here
}
}];
答案 1 :(得分:-1)
您可以在[sec FirstFunction]
中设置一个观察者,以便firstFunction
的工作完成后调用[self SecondFunction]
在[sec FirstFunction]中编写此方法
[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:self];
并在当前的viewController中使用此观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil];
-(void)somethingHappens:(NSNotification*)notification
{
[self SecondFunction];
}