Предупреждение 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
.