【发布时间】:2013-05-08 06:28:34
【问题描述】:
下面的代码工作正常,我只是不知道应该去哪里发布,因为我不确定规则是什么。我没有使用 ARC。
- (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
}
【问题讨论】:
-
附注没有理由在
photo上使用__block,因为photo没有分配给任何地方 -
将
[photo release]放在dispatch_async块内部的末尾不会导致任何问题。您的问题一定是由您没有显示的内容引起的。
标签: ios memory-management objective-c-blocks