Qual é a maneira correta de evitar o ciclo de retenção usando blocos?

Qual é a maneira correta de adicionar objetos no NSMutableArray que é fortemente definido pela propriedade.

[tapBlockView setTapBlock:^(UIImage* image) {
   [self.myImageArray addObject:image]; // self retain cycle
}

Se eu vou criar uma referência fraca, algo como

__weak NSMutableArray *array = self.myImageArray;
[tapBlockView setTapBlock:^(UIImage* image) {
    [array addObject:image]; // If I will do this then how will I update original Array ?
}

Eu também tentei

__weak id weakSelf = self;
[tapBlockView setTapBlock:^(UIImage* image) {
    [weakSelf storeImageInaNewMethod:image]; // Calling SToreImageInaNewMethod
}

e

-(void)storeImageInaNewMethod:(UIImage*)image {
   [self.myImageArray addObject:image]; // This again retaining cycle
}

Qual é a maneira correta de atualizar o objeto original definido pela propriedade?

questionAnswers(4)

yourAnswerToTheQuestion