Tôi có hình ảnh trong coredata mà tôi đang cố gắng tải một cách lười biếng cho chế độ xem bảng. Mỗi ô sử dụng một người quan sát cho thực thể dữ liệu cốt lõi có liên quan để cập nhật hình ảnh khi có sẵn. Các mã có liên quan trong tổ chức thực hiện như sau:Nhận EXC_BAD_ACCESS khi sử dụng dispatch_async với Dữ liệu chính
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// The heavy lifting seems to be during firing of the fault and accessing data,
// so i'm trying to do that in the background thread.
UIImage *i = [UIImage imageWithData:self.imageEntity.data];
// I now need to notify observers that the image is ready on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self willChangeValueForKey:@"image"];
image = i;
[self didChangeValueForKey:@"image"];
});
});
Dự án sử dụng ARC, tôi không nhận được bất kỳ lỗi biên dịch hoặc cảnh báo, và khi tôi chạy nó loại công trình cho đến khi tôi di chuyển nhanh chóng, và sau đó tôi nhận được một EXC_BAD_ACCESS trên dòng khi tôi tuyên bố i.
Tôi thiếu gì ở đây?
Bạn đã thử với 'NSZombieEnabled' chưa? – zoul
điều gì xảy ra nếu bạn không sử dụng dispatch_async? chỉ chạy trên chủ đề chính –
NSZombie không làm giảm thêm bất kỳ ánh sáng nào cho tôi. Nếu tôi không dispatch_async nó sẽ chặn các chủ đề chính và di chuyển thực sự kém. – dizy