Если вы используете NSThread, вам придется погрузиться в управление памятью, если вы не работаете в XCode 4.2 и не используете ARC.
Таким образом, есть два способа получения XML с сервера.
1) Используйте NSURLConnection, чтобы получить XML как объект NSData, и когда вы закончите загрузку данных, вы можете просто использовать эти данные.инициализировать объект NSString.NSURLConnection отправляет асинхронный вызов на сервер, чтобы он не замораживал ваше представление.
2) Вы можете использовать NSIncovationOperation и NSQueue для получения вашего XML, и это также не повлияет на ваш основной поток.как
-(void)myMethod{
NSString *test=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%@",addressLabel.text,portLabel.text]] encoding:NSUTF8StringEncoding error: nil];
[self performSelectorOnMainThread:@selector(handleString:) withObject:test];
}
Вы можете использовать объект NSInvocationOperation следующим образом
NSInvocationOperation *opr = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(myMethod) object:nil];
NSOperationQueue *queue= [NSOperationQueue new];
[queue addOperation:opr];
Когда будет вызван селектор выполнения, вы можете передать этот строковый объект XML методу handleString:.как
-(void)handleString:(NSString*)xmlString{
// Do something with string
}
Я надеюсь, что это немного прояснит ваше замешательство.Все это должно было дать вам представление о том, как вы можете достичь своей цели, не замораживая свой интерфейс, то есть основной поток.
regards,
Arslan