Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSXMLParser多线程问题_Objective C_Multithreading_Thread Safety_Nsxmlparser - Fatal编程技术网

Objective c NSXMLParser多线程问题

Objective c NSXMLParser多线程问题,objective-c,multithreading,thread-safety,nsxmlparser,Objective C,Multithreading,Thread Safety,Nsxmlparser,我正在用UISplitViewController开发一个iPad应用程序 如果单击masterview中的单元格,detailView将运行NSXMLParsers加载所需的数据。为了保持UI的可用性,这是在一个额外的线程中完成的。 应用程序使用不同的DetailViewController,这些控制器使用不同的解析类实现NSXMLParserDelegate 我的问题是,似乎NSXMLParser的[parser parse]方法只能运行一次,因为如果我尝试在多个线程中同时运行它,就会出现*

我正在用UISplitViewController开发一个iPad应用程序

如果单击masterview中的单元格,detailView将运行
NSXMLParsers
加载所需的数据。为了保持UI的可用性,这是在一个额外的线程中完成的。 应用程序使用不同的
DetailViewController
,这些控制器使用不同的解析类实现
NSXMLParserDelegate

我的问题是,似乎
NSXMLParser
[parser parse]
方法只能运行一次,因为如果我尝试在多个线程中同时运行它,就会出现*EXC\u BAD\u ACCESS*错误

现在,如果用户选择masterView中的一行,然后选择另一行,而第一个detailView仍在加载和解析数据,那么两个线程将尝试使用parse方法,这将抛出上述错误


因此,我想知道如何实现此方法只运行一次,尽管它在不同的线程和不同的实例/类中使用。

是否为每个线程初始化NSXMLParser?DetailViewController初始化一个响应NSXMLParserDelegate的类。我需要解析不同的文件,因此我有几个类充当委托并初始化NSXMLParser。问题是当另一个线程使用[xmlParser parse]时调用[[NSXMLParser alloc]init]。这会导致解析方法使应用程序崩溃。因此,我需要知道NSXMLParser是否已分配,并等待它被解除分配。有没有办法检查NSXMLParser的实例是否存在?