2015-05-19 2 views
3

У меня есть следующие несколько строк кода:Избавиться от предупреждения «Выражение Результат неиспользуемым»

NSURL *url = [NSURL URLWithString:URL]; 
NSURLRequest* request = [NSURLRequest requestWithURL:url .... ]; 
NSURLConnection* connection = [NSURLConnection alloc]; 
[connection initWithRequest:request delegate:self]; 

В последней строке я получаю «Выражение Результат Неиспользованные» предупреждение. Теперь, согласно всем статьям онлайн, которые я прочитал, это правильный способ вызова метода, а синтаксису рекомендуется загрузить URL-адрес async. Как переписать этот код, чтобы исправить предупреждение?

+0

Пример урока я Ниже приводится: http://codewithchris.com/tutorial-how-to-use-ios-nsurlconnection-by -example/ – user230910

+0

Вы можете заменить последние 2 строки на NSURLConnection * conn = [[NSURLConnection alloc] initWithRequest: request delegate: self]; – aBilal17

+0

, который просто дает мне предупреждение о res, не используется :( – user230910

ответ

3

Вы можете использовать эту строку:

[NSURLConnection connectionWithRequest:request delegate:self]; 

вместо:

NSURLConnection* connection = [NSURLConnection alloc]; 
[connection initWithRequest:request delegate:self]; 
+0

ОК, это работает, но ПОЧЕМУ? – user230910

+0

, потому что вам не нужна переменная экземпляра NSURLConnection, просто запустите его, то же самое с NSTimer – ChikabuZ

1
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wunused-value" 
NSURL *url = [NSURL URLWithString:URL]; 
NSURLRequest* request = [NSURLRequest requestWithURL:url .... ]; 
NSURLConnection* connection = [NSURLConnection alloc]; 
[connection initWithRequest:request delegate:self]; 
#pragma clang diagnostic pop 

Список всех лязг предупреждений вы можете подавить take a look here

+0

Подавление предупреждения, безусловно, является «плохой вещью» (tm) ??? – user230910

+0

Ну, я думал, вы хотите подавить предупреждение. Не так ли? – Lefteris

+0

no, i хотите исправить то, что не так с моим кодом, наверно, умный ppl сделал предупреждение по какой-то причине? – user230910

1

Заменить последние 2 строки с:

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

Предупреждение полезно, потому что alloc может возвращать другой объект, чем init (например, при использовании NSArray, в котором используется class cluster pattern).

В этом случае connection будет ссылкой на этот «промежуточный» объект, возвращаемый alloc вместо полностью инициализированного экземпляра, возвращаемого init.

+0

, это тоже работает, b ut, кажется, обманывает компилятор вместо решения проблемы? – user230910

+0

Добавлено объяснение. –

+0

спасибо!теперь намного яснее – user230910

5

Проблема исходит из того, что метод NSURLRequest initWithRequest… возвращать объект, который вы не храните.

Если вам не нужна, вы должны написать:

(void)[connection initWithRequest:request delegate:self]; 

сообщить компилятору, что вы сознательно хотите игнорировать возвращаемое значение.

+0

это действительно хорошо, очень полезно для общего случая, спасибо! – user230910

+0

И он более переносим другие компиляторы C, чем прагма. –

1

Просто измените последнюю строку на:

connection = [connection initWithRequest:request delegate:self];

Смежные вопросы