Необходимо использовать NSOperationQueue для анализа двух разных классов NSOperation - PullRequest
0 голосов
/ 02 марта 2011

Попытка разобрать два разных URL-адреса с данными XML.

static NSString *string1 = @"http://abc.com/abc1.xml";
NSURLRequest *URL1 =[NSURLRequest requestWithURL:[NSURL  URLWithString:string1]];
self.URL1Connection =[[[NSURLConnection alloc] initWithRequest:URL1 delegate:self] autorelease];

static NSString *string2 = @"http://abc.com/abc2.xml";
NSURLRequest *URL2 =[NSURLRequest requestWithURL:[NSURL URLWithString:string2]];

self.URL2Connection =[[[NSURLConnection alloc] initWithRequest:URL2 delegate:self] autorelease];

У меня есть два разных класса NSOperation, оба работают независимо, так как у обоих есть своя собственная работа, чтобы закончить. У меня есть parseQueue, который является NSOperationqueue, в котором я добавил две разные операции.

   TestOperation *testOperation = [[TestOperation alloc]                                                     
   initWithData:self.data1 delegate:self ];

    [self.parseQueue addOperation:testOperation];
   [testOperation release];   // once added to the NSOperationQueue it's retained, we don't need it anymore
   testOperation = nil;

    Test1Operation *test1Operation = [[Test1Operation alloc]        
    initWithData:self.data2];

[self.parseQueue addOperation:test1Operation];
  [test1Operation release];   // once added to the NSOperationQueue it's retained, we don't need it anymore
   test1Operation = nil;

По сути, я пытаюсь проанализировать две xml-данные по отдельности и хочу выполнить параллельные операции. Но когда вторая операция заканчивает добавление в очередь, она все равно смотрит на первую операцию класса. Я заблудился в этом, так как понятия не имею, почему он все еще ищет первый класс даже после выпуска. Кто-нибудь может подсказать некоторые идеи и помочь мне.

1 Ответ

0 голосов
/ 02 марта 2011

Я разобрался с ответом.

Необходимо вызывать каждый URL-адрес XML в своем собственном соответствующем классе и вызывать NSOperation для каждого вызова отдельно. Вместо вызова метода делегата приложения, при необходимости вызовите метод viewdidload или viewdidappear.

По завершении синтаксического анализа уведомите главный поток о том, что анализ завершен, и верните результат.

Sagos

...