gpt4 book ai didi

objective-c - iPad 应用程序在 NSOperationQueue 期间卡住

转载 作者:行者123 更新时间:2023-11-29 04:38:44 24 4
gpt4 key购买 nike

我在实现 NSOperationQueue 的应用程序中遇到问题。似乎按下 iPad 的关闭按钮会使 UI 卡住。应用程序本身仍在后台运行,UI 已更新,只是它不再响应触摸或旋转,并且不会按应有的方式关闭。

我有一个更新模块,可以下载相当长的 xml 文件列表并将它们保存在设备上。操作队列的 MaxConcurentOperations 值为 2。通常一切正常,应用程序运行良好且花哨,响应我的触摸和旋转,直到我按下设备的按钮。此后,用户界面就会卡住。进度仍然更新(UILabel),仍然显示循环动画,但在所有操作完成之前应用程序不会关闭。

我没有在队列中调用 waitUntilAllOperationsAreFinished,所以我不知道可能是什么原因造成的。到目前为止,我只在使用 iOs 5.0 的第一代 iPad 上进行了测试

如果有人能给我一些建议,我将非常感激。如果有必要,我可以发布 NSOperationQueue 和 NSOperation 类代码,但不知何故,我感觉我错误地处理了这个问题,而不是错误的代码行

[编辑]我还使用计时器定期检查下载状态,但我注意到不调用计时器并不能消除问题

self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(xmlDownloaded) userInfo:nil repeats:YES];

[编辑2]经过进一步的研究,我确保我的操作是并发的,并且为了确定,我更改了将操作添加到队列的方式。而不是

[downloadQueue addOperation:op];

我将它们添加到一个名为“操作”的可变数组中,最后我使用了

[downloadQueue addOperations:operations waitUntilFinished:NO];

但是当我按下关闭按钮时我的应用程序仍然卡住...

最佳答案

大胆猜测,您正在锁定主线程等待操作完成/您正在销毁 viewWillDisappear 上的操作委托(delegate)?

关于objective-c - iPad 应用程序在 NSOperationQueue 期间卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com