我在尝试让我的 Objective-C 代码在触发后续代码之前适当地等待来自 UIAlertView 的用户输入时遇到了很多麻烦。例如,我有以下代码:
if (!self.currentUser) [self displayLoginUIAlertView];
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
Program
自定义对象在哪里,用户输入从哪里设置[self displayLoginUIAlertView]
属性self.currentUser
。
我不希望将第二行和第三行放入(Program *program
因为[program startProgram]
我alertView:didDismissWithButtonIndex
试图限制视图控制器中不同类型警报视图的数量。此外,我不希望创建自己的自定义全模态 UIAlertView 对象(正如一些在线解决方案似乎暗示的那样)。
我正在寻找的答案有望超越 UIAlertView 对象,并有助于回答更普遍的问题,即如何在进入下一行代码之前等待 Objective-C 中的一行完全执行。我还尝试了以下方法:
if (!self.currentUser) [self displayLoginUIAlertView];
while (!self.currentUser) wait(1);
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
然而,这(不出所料)会导致一个无限循环,其中警报视图永远不会出现并且用户输入被锁定。
我已经研究过使用块,但对它们的语法感到非常困惑。块是解决方案吗?还是我问错了问题?