获取BOOL后暂停和恢复的任何代码?
-(void)methodOne{
[self methodTwo]; <----- what should I code here to "pause and waiting respond?
/// other coding
}
==============更新============
我希望调用methodTwo,在继续///其他编码之前等待返回BOOL
答案 0 :(得分:2)
这里有很多答案,没有理由就太复杂了。
正如@samfisher所提到的,如果你的methodTwo没有运行异步代码,那么执行是串行的,这意味着你的methotOne函数中的代码将在methodTwo完成后执行。
如果您有异步代码,那么明显而简单的解决方案是将methodOne拆分为两个独立的函数:
-(void)methodOne{
//previous code execution here
[self methodTwo];
}
- (void)afterMethodTwo(BOOL)resultsFromMethodTwo {
/// other coding
}
并在methodTwo中,调用afterMethodTwo函数并传递布尔变量,如下所示:
[self afterMethodTwo:myBool];
这是最简单,最干净的方法,因为任何其他方法都会使代码变得不必要复杂。
答案 1 :(得分:1)
确保您的methodTwo
没有任何异步执行
答案 2 :(得分:1)
像这样使用'performSelectorOnMainThread',重要的是将'waitUntilDone'设置为'YES':
-(void)methodOne
{
// [self methodTwo];// <----- what should I code here to "pause and waiting respond?
/// other coding
NSNumber *isDone = [self performSelector:@selector(methodTwo) withObject:nil waitUntilDone:YES];
NSLog(@"%i", [isDone boolValue]);
}
-(NSNumber*)methodTwo
{
return [[NSNumber alloc] initWithBool:YES];
}
答案 3 :(得分:0)
像这样使用'performSelectorOnMainThread',重要的是将'waitUntilDone'设置为'YES':
-(void)methodOne{
[self performSelectorOnMainThread:@selector(methodTwo) withObject:nil waitUntilDone:YES];
/// other coding
}