Предупреждение Xcode 4 "Результат выражения не используется" для NSURLConnection

Я просто пытаюсь сделать свою обычную передачу данных. Я определяю свой NSMutableURLRequest, затем вызываю

[[NSURLConnection alloc] initWithRequest:request delegate:self];

Раньше это было нормально с Xcode 3, но Xcode 4 предупреждает меня о "Результат выражения не используется" в этой строке. Запрос работает, но я хотел бы найти способ избавиться от предупреждения.

Я полагаю, что могу сохранить соединение в переменной, но мне это не нужно, и я не вижу смысла устанавливать его в nil на следующей строке (хотя это уберет предупреждение)

Обратите внимание: я не на 100% уверен, что это Xcode 4 или факт ARC включен.

Ответ 1

Когда функция возвращает результат, который вам не нужен, вы можете отбросить его на void, чтобы исключить предупреждение компилятора:

(void) [[NSURLConnection alloc] initWithRequest:request delegate:self];

Я еще не использовал ARC, поэтому не могу сказать, если это хорошая идея, перед ARC вам нужно будет сохранить этот результат указателя где-нибудь, чтобы вы могли его освободить.

Ответ 2

progrmr ответ правильный, но здесь еще более чистый способ сделать это:

[NSURLConnection connectionWithRequest:request delegate:self];

Это не вызывает предупреждения, даже если вы не делаете результат недействительным.

Ответ 3

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

Предположим, что следующий пример:

  • ваш экземпляр ClassA создает экземпляр NSURLConnection
  • ваш экземпляр ClassA освобожден и освобожден
  • NSURLConnection все еще жив и уволит делегата на ваш освобожденный экземпляр.

Чтобы решить эту проблему, вы должны сохранить экземпляр NSURLConnection и освободить это соединение, если ваш экземпляр ClassA будет отменен, что также приведет к освобождению экземпляра NSURLConnection.