在Ios中调用函数的问题?

时间:2016-01-25 06:08:23

标签: ios objective-c

我在一个电话和电话中首先有两个功能。我在另一个类中定义了第一个函数。我在其他类中调用该函数。我在自己的类中定义了我的第二个函数。

FirstClass.m 具有 FirstFunction 功能&我在 SecondClass.m 中调用它。

SecondClass.m有 SecondFuncion 功能&我在 SecondClass.m 中调用它。第一个函数使用AFnetworking& amp;从服务器获取数据。给予回应。截至目前,我在 SecondClass.m

中调用此类函数
 SecondClass *sec = [[SecondClass alloc]init];
                [sec FirstFunction];
                [self SecondFunction];

我想在第一个s完成工作时调用第二个函数。但是这里第一个函数是异步的,所以第二个函数不等待第一个函数的响应。请告诉我该怎么做?我可以使用某种监听器所以代码不应该继续进行,它应该等待第一个函数的响应。

2 个答案:

答案 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];
}