У меня есть метод, который принимает блок:Скопированных блоки и предупреждение утечки звона
- (void)methodWithBlock:(blockType)block
Способ начинается путем копирования block
, потому что она делает асинхронные вещи, прежде чем использовать его, и это было бы в противном случае. Отбрасывается Затем он вызывает метод в другом блоке, а затем освобождает его в этом блоке. Резюме:
- (void)methodWithBlock:(blockType)block
{
block = [block copy];
[something asyncStuffWithFinishedBlock:^{
// ..
block();
[block release];
}];
}
CLANG жалуется на утечку памяти для «блока». Если я удалю операторы копирования и освобождения, блок исчезнет к тому времени, когда он будет вызван - по крайней мере, ранние сбои указывают на то, что это так.
Это неправильный способ сделать что-то? Если да, то как мне сделать выше - то есть обратный вызов блока изнутри блока в методе? Я не могу хранить блок как переменную экземпляра, так как метод может вызываться повторно с разными аргументами, пока происходит асинхронная часть.
Упс, я опечатал - в этом утверждении я имел в виду block = [block copy]. – Kalle
Что касается их не нужно ... гах. Хорошо, спасибо, я сделаю некоторые исследования. – Kalle