iphone – 在执行之间暂停执行一个接一个的方法
新手obj-c问题.
我正在写一个简单的iPad演示文稿而不是Appstore.我的任务是实现一个接一个地执行的几个方法,它们之间几乎没有暂停.主要结构如下: >查看负载 我从-viewDidLoad调用的第一个方法: NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(firstCountStarts) userInfo:nil repeats:NO]; 一切都很好,方法在视图加载后2秒开始. [self method1]; [self performSelector:@selector(method2) withObject:nil afterDelay:2]; [self performSelector:@selector(method3) withObject:nil afterDelay:4]; etc... 但是在method2调用所有方法之后没有执行.如果我理解线程中的问题.我是否需要使用GCD在不同的队列中执行方法?或者也许是其他问题? 谢谢,同事们! 解决方法
您可以将这些添加到NSOperation队列中……
NSOperationQueue *queue = [NSOperationQueue new]; queue.maxConcurrentOperationCount = 1; [queue addOperationWithBlock:^{ [self method1]; }]; [queue addOperationWithBlock:^{ [NSThread sleepForTimeInterval:2.0]; [self method2]; }]; [queue addOperationWithBlock:^{ [NSThread sleepForTimeInterval:2.0]; [self method3]; }]; ... 然后,只有在前一个完成后才会运行每一个并为您提供2秒的延迟. 但是要小心使用它来做UI的东西.这将在后台线程中运行,因此您可能需要处理它. 也许这可能会更好,你可以通过继承NSOperation来做到这一点,但这是很多工作没有太大的好处. 从你想要的地方运行它,我建议将所有这些放入一个名为setUpQueue的函数中. 然后从viewWillAppear或viewDidLoad或其他地方,按下按钮等…执行… [self setUpQueue]; 您所要做的就是将所有内容添加到队列中,然后队列将自行管理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |