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


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

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

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

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

обратите внимание: я не уверен на 100%, если это XCode 4 или дуга факта включена.

большое спасибо за вашу помощь!

3 70

3 ответа:

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

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

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

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

[NSURLConnection connectionWithRequest:request delegate:self];

это не вызывает предупреждения, даже если вы не приведете результат к void.

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

предположим следующий пример:

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

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