Iphone 进程运行时是否可以阻止iTunes通知

Iphone 进程运行时是否可以阻止iTunes通知,iphone,ios,objective-c,ipad,itunes,Iphone,Ios,Objective C,Ipad,Itunes,我正在开发一个iOS应用程序,用户在线获取一个大小合理的数据库,然后离线使用它。由于设备上的内存限制以及我处理事务性插入的方式,更新和同步大约需要10-15分钟。一直以来,我都打开了一个对话框视图,通知用户进度,并给他取消和恢复数据库更改的选项 无论如何,今天在测试时,我注意到iTunes应用程序试图以服务器身份联系并进行一些后台工作,但抛出了一个错误: itunesstored[68] <Warning>: Could not load download manifest wit

我正在开发一个iOS应用程序,用户在线获取一个大小合理的数据库,然后离线使用它。由于设备上的内存限制以及我处理事务性插入的方式,更新和同步大约需要10-15分钟。一直以来,我都打开了一个对话框视图,通知用户进度,并给他取消和恢复数据库更改的选项

无论如何,今天在测试时,我注意到iTunes应用程序试图以服务器身份联系并进行一些后台工作,但抛出了一个错误:

 itunesstored[68] <Warning>: Could not load download manifest with underlying error: 
                             Error Domain=NSURLErrorDomain Code=-1001 "Cannot connect
                             to 112.168.198.2" UserInfo=0x1f8d6150 
                             {NSLocalizedDescription=Cannot connect to 112.168.198.2}
iTunestored[68]:无法加载下载清单,出现基本错误:
错误域=nsurErrorDomain代码=-1001“无法连接
至112.168.198.2“用户信息=0x1f8d6150
{NSLocalizedDescription=无法连接到112.168.198.2}
这导致在我已经显示的对话框上显示一个对话框,通知用户iTunes无法连接

现在,当我单击“关闭”按钮时,它也以某种方式关闭了我的对话框,导致在用户决定停止更新时只执行部分操作。异步更新在后台继续进行,而数据库试图还原导致数据库锁定的更改,我需要终止该进程并重新启动应用程序并进行更新。根据设计,如果发生这样可怕的事情,这一切都会恢复

现在我注意到我应该在我的代码中做一些更改,使数据库更难像那样锁定,我正在努力。 但我想知道的是:当应用程序中的某个关键进程正在进行时,是否可以禁止iTunes或任何其他进程在UI线程上执行任何工作?


iTunes对话框取消按钮的行为,即向下传播到我的对话框中,不能被认为是正常或合理的

不,这是不可能的。应用程序的编码方式应该能够解释这些中断。例如,在iPhone上,如果接到电话会发生什么?处理它是应用程序的责任;无论您的“关键流程”如何,系统都会让电话接通


总的来说,听起来你的应用程序不是以最好的方式设计的。例如,10分钟解析一个数据库似乎非常长,这个数据库有多少条记录?您应该能够在几秒钟内在iPhone上导入包含100000条记录的数据库。

正如我所说,这表明我的设计存在缺陷。但这并没有改变这样一个事实:iTunes对话框触摸事件通过所有其他显示对话框都有点奇怪。就时间而言,数据以JSON形式提供给我,我需要对其进行解析。尝试获取比现在更大的JSON字符串会给我带来一个内存异常。因此,我需要更频繁地获取较小的版本。数据是包含图像数据的64位字符串。也许这不是最好的方式,但在这种情况下,我的手被束缚住了。我不确定多个
UIAlertView
的确切行为,但我认为如果与iTunes one交互,您的警报应该保持不变。在数据方面,当你说64位图像数据为字符串时,你是指base64吗?是的,对不起,是指base64。我无法重现这种情况,因此无法看到alertview实际发生了什么。我只需要尽力处理它。关于数据库的导入,您可以导入字符串。然后,在以后的某个日期解码图像本身,可能通过延迟实例化?