Objective c NSXMLParser多线程问题
我正在用UISplitViewController开发一个iPad应用程序 如果单击masterview中的单元格,detailView将运行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]方法只能运行一次,因为如果我尝试在多个线程中同时运行它,就会出现*
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的实例是否存在?