3
解析很有用。我的NSXMLParser不能在後臺工作
-(void) callParse
{
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
[parser release];
}
我想在後臺執行解析。此代碼不執行任何解析。但爲什麼?
@interface NSXMLParser(Private)
- (void)myParse;
@end
@implementation NSXMLParser(Private)
- (void)myParse
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self parse];
[pool drain];
}
@end
-(void) callParse2
{
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[NSThread detachNewThreadSelector:@selector(myParse) toTarget:parser withObject:nil];
[parser release];
}
更新:我呼叫callParse2 4次,它創建4個線程。它做了一些解析,但結果很混亂。可能是我有同步變量的一些問題。 NSXMLParser調用使用非原子屬性的委託。
如果您四次調用此方法,此代碼是否有效? – Voloda2 2012-02-09 15:43:33
是的,它會用它自己的解析器對象打開4個新線程。只要你的委託可以處理4個獨立的解析器,那麼它應該沒問題。 – 2012-02-09 15:44:34