2014-01-16 3 views
0

У меня возникла проблема с экземплярами NSURLConnection, которые после использования произвольного числа из них перестают работать и никогда не назовут их методы delegate. То, как они ставятся на работу заключается в следующем:NSURLConnection on mainRunloop не работает

[[NSRunLoop mainRunLoop] addPort:self.port forMode:NSDefaultRunLoopMode]; 
[_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 
[self.connection start]; 
[[NSRunLoop mainRunLoop] run]; 

Тот факт, что они перестают работать после использования многих из них, заставляет меня думать, что они бегут из какой-либо из ресурсов (возможно, порты на главной runLoop или что-то другое).

Похоже, все становится очищены довольно хорошо

[_connection cancel]; 
[_connection release]; 

[[NSRunLoop mainRunLoop] removePort:self.port forMode:NSDefaultRunLoopMode]; 
[_port release];  
[super dealloc]; 

вы, ребята, видите ничего плохого в таком подходе? Любые идеи, почему они могут перестать работать?

ответ

1

Согласно Apple's documentation on NSRunLoop: Режимы

Run Loop

NSRunLoop defines the following run loop mode. 

extern NSString* const NSDefaultRunLoopMode; 
extern NSString* const NSRunLoopCommonModes; 
Constants 

NSDefaultRunLoopMode 

    The mode to deal with input sources other than NSConnection objects. 

Я заметил, что вы использовали NSDefaultRunLoopMode для того, что, как представляется, являются объектами NSConnection, которое, хотя и не видя остальная часть вашего кода я действительно просто спекулирую. Еще одна вещь, которую вы можете попробовать использовать, - performSelector:onThread:withObject:waitUntilDone:, так как возможно, что одно из ваших подключений попадет в состояние гонки.

 Смежные вопросы

  • Нет связанных вопросов^_^