下面的代碼工作正常,我只是不知道發佈應該去哪裏,因爲我不知道規則是什麼。我沒有使用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.沒有理由在'photo'上使用'__block',因爲'photo'沒有被分配到任何地方 – newacct 2013-05-08 10:23:53
把'[photo release]放在'dispatch_async'塊內部的末尾不應該引起任何問題。您的問題必須是由您未顯示的內容引起的。 – newacct 2013-05-08 20:07:11