Если вы получаете сообщение об ошибке didRecieveData независимо от кода внутри, похоже, ваш делегат освобожден?
Я бы проверил, что объект, содержащий метод getMessages, не освобождается (или автоматически освобождается), пока соединение не завершило получение данных.
РЕДАКТИРОВАТЬ: комментарии ниже показывают, что мой ответ выше неправильный:)
Проблема была в переменной recceiveData - она была выпущена раньше. Марк предлагает выпустить его в методе dealloc объекта, который создает соединение, поэтому он заслуживает всяческих похвал за это!
Там есть одна небольшая вещь, которую нужно посмотреть - если вы освободите recceiveData в методе dealloc, вы потеряете память, если вызовете getMessages более одного раза. Вам нужно будет немного изменить getMessages следующим образом:
...
if (theConnection) {
[recievedData release]; // If we've been here before, make sure it's freed.
receivedData = [[NSMutableData data] retain];
} else {
...