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];
}
UPDATE:私はcallParse2を4回呼び出し、4つのスレッドを作成します。それはいくつかの解析を行いますが、結果は乱雑です。私は同期変数にいくつか問題があるかもしれません。 NSXMLParserは、非原子的プロパティを使用するデリゲートを呼び出します。
このコードは、このメソッドを4回呼び出すと機能しますか? – Voloda2
はい、4つの新しいスレッドがそれぞれ独自のパーサーオブジェクトとともに開きます。代理人が4つの別々のパーサーを処理できる場合は、大丈夫です。 –