Утечка блоков внутри NSMutableArray (ARC)

У меня есть некоторые операции, которые находятся внутри блоков. Эти операции обновляют только UIImageследующим образом:

^(UIImage *image) {
            self.myImage = image;
        }];

Мое изображение вычисляется при доступе к Интернету с помощью NSURLConnection. Когда я получаю изображение из Интернета, я вызываю этот блок, который находится внутри NSMutableArray. Все идет нормально. Моя проблема заключается в том, что когда у меня есть несколько изображений с одним и тем же URL-адресом, вместо того, чтобы делать несколько вызовов, я просто добавляю новый блок в NSMutableArrayвнутри класса, который обрабатывает соединение. Таким образом, я делаю один вызов и обновляю несколько изображений с общим URL-адресом. Все работает нормально, проблема в том, что у меня текут блоки. Я добавляю такой блок в NSMutableArray:

 if( (self = [super init]) ) 
    {
        self.connectionURL=url;
        self.arrayOfBlocks=[NSMutableArray array];
        [arrayOfBlocks addObject:completion];
    }
    return self;

Это когда инициализируется класс соединения. Это когда мне нужно добавить новый блок в NSMutableArray(я только его добавляю, и все):

[arrayOfBlocks addObject:completion];

Это когда я наконец получаю обратный вызов, и начинаю выполнять блоки:

 for (MyBlock blockToExecute in arrayOfBlocks)
    {
        blockToExecute([UIImage imageWithData:data]);
    }

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


enter image description here

5
задан Kazuki Sakamoto 13 May 2012 в 23:52
поделиться