Отвечая себе:
Мое понимание документации говорит о том, что использование ключевого слова block
и установка переменной равной nil после использования ее внутри блока должны быть в порядке, но все равно отображается предупреждение.
__block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:...
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
request = nil;
// ....
}];
Обновление: заставило его работать с ключевым словом '_ слабый' вместо ' _block' и использованием временной переменной:
ASIHTTPRequest *_request = [[ASIHTTPRequest alloc] initWithURL:...
__weak ASIHTTPRequest *request = _request;
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
// ...
}];
Если вы хотите настроить таргетинг на iOS 4, используйте __unsafe_unretained
вместо __weak
. Такое же поведение, но указатель остается висящим вместо того, чтобы автоматически устанавливаться в ноль при уничтожении объекта.