Код ниже отлично работает, я просто не знаю, куда должен идти релиз, потому что я не уверен, что это за правила. Я не использую ARC.Как использовать выпуск с переменной __block?
- (void)myFunc {
// stuff happens
__block UIImage* photo = [UIImage imageWithCGImage:croppedCGImage];
[photo retain];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
[self doStuffToPhoto:photo];
// [photo release] causes EXC_BAD_ACCESS
});
// [photo release] causes EXC_BAD_ACCESS in doStuffToPhoto
}
- (void)doStuffToPhoto:(UIImage*)photo {
// do stuff
// [photo release] causes EXC_BAD_ACCESS
}
p.s. нет никакой причины использовать '__block' на' photo', так как 'photo' не назначается нигде – newacct
размещение' [фото-релиза] 'в конце внутренней части блока' dispatch_async' не должно вызывать никаких проблем. Ваша проблема должна быть вызвана тем, что вы не показываете. – newacct