2010-04-21 1 views
0

Я перемещаю свои первые шаги как с помощью ссылок на URL, так и с нитями, которые несут меня, если вопрос может возникнуть тривиально. В принципе, я хотел бы выполнить NSUrlConnection в отдельном потоке (даже если это может привести к «опасному» состоянию многих документов). Прежде чем решить, следует ли принять это решение, я должен сначала его реализовать. Теперь вопрос очень прост: каков фактический код для этого. Я знаю, чтоКак выполнить NSUrlConnection в отдельном потоке?

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

выполняет загрузку, я попытался это, кажется, работает. Я прочитал, что

- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument 

и

+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument 

должны быть использованы для создания нового потока

Теперь, как добавить метод initWithRequest к теме? Оба метода потоков, похоже, принимают селектор с не более чем одним параметром. Чтение действительно необходимого кода было бы действительно оценено.

спасибо.

ответ

-1

Вы можете создать метод, который позаботится о создании NSURLConnection и других связанных с ним вещах.
Затем вызовите этот метод в другом потоке.

- (void)connect 
{ 
    NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; 
    NSURLConnection * theConnection = [ [ NSURLConnection alloc ] initWith ... ]; 
    /* Rest of the code... */ 
    [ pool release ]; 
} 

NSAutoreleasePool необходим для обработки объектов с автореализацией. Поскольку метод connect выполняется в другом потоке, никакой пул не существует, и вы должны создать его самостоятельно.

Затем создает поток для подключения метода:

[ NSThread detachNewThreadSelector: @selector(connect) toTarget: self withObject: nil ]; 
+0

Здравствуйте и спасибо за ваш ответ. Я попытался сделать так, как было предложено, только что созданный метод задает запрос, соединение и пул. Он регулярно вызывается в новом потоке, как я вижу из консоли, но потом ничего не происходит. Я имею в виду, что методы подключения делегата не вызываются. Никаких данных не добавлено, нет успеха соединения или сбоя. Есть идеи об этом? – user236739

+0

Вы не можете получить доступ ко всем делегатам NSURLConnection. – Satyam

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

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