我有一个for循环,它调用另一个类中的类方法,其中UIAlertView弹出窗口会在某些条件下触发。如果弹出窗口显示,我想逃避循环。实施这种沟通的常用策略是什么?
答案 0 :(得分:4)
我认为有可能找到一些方法来检测现在是否暴露了一些UIAlertView。
但它不是很好。以这种方式构建的程序可能会因框架内容的微小变化而分崩离析。你需要在物体之间建立一些联系
1.使用委托模式。这是最好的方式。
2.如果对象之间的连接太复杂或不可预测,这使得委托使用困难,请使用通知模式(阅读有关NSNotificationCenter类的信息)。
答案 1 :(得分:1)
如果类方法在出现错误时显示UIAlertView,那么将错误代码返回给调用者可能是有意义的,如果它返回错误代码就会停止迭代。
某些NS方法执行类似这样的操作,您将NSError **传递给方法,如果有错误,则设置指针,即:
NSError* error = nil;
for (id object in SomeObjects) {
[NSDoSomething:object error:&error];
if (error) break;
}
答案 2 :(得分:0)
你可以在两个类都可以访问的地方声明一个BOOL。例如:
// declare this variable somewhere that will be accessible to both classes, i.e. a singleton
BOOL alertIsShown;
// when showing the UIAlertView:
alertView.delegate = self;
[alertView show];
alertIsShown = YES;
// UIAlertViewDelegate method
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
alertIsShown = NO;
}
// in your for loop
for(...) if(alertIsShown) break;