我有一个模态视图控制器,具有两个操作:确认和取消。如果用户点击这两个按钮之一,则会发生某些事情,并且视图控制器将自动关闭。

我需要处理用户在一定时间间隔内不执行任何操作的情况。在这种情况下,应关闭视图控制器。我试图在viewDidLoad:方法内添加以下指令:

// Timeout handling
[self performSelector:@selector(dismissViewController) withObject:self afterDelay:10.0];


我的dismissViewController选择器很简单,正如名称所建议的那样:

- (void)dismissViewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}


无论如何,当时间到期时,我的应用程序崩溃了。我从控制台收到以下错误:

2015-12-29 12:57:00.082 Test[826:292764] *** Assertion failure in void _UIPerformResizeOfTextViewForTextContainer(NSLayoutManager *, UIView<NSTextContainerView> *, NSTextContainer *, NSUInteger)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIFoundation/UIFoundation-432/UIFoundation/TextSystem/NSLayoutManager_Private.m:1551
2015-12-29 12:57:00.083 Test[826:292764] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Only run on the main thread!'


有人可以解释一下为什么吗?

最佳答案

试试这个:

[self performSelector:@selector(dismissViewController) withObject:nil afterDelay:10.0];

10-07 23:02