Rastgele bir EXC_BAD_ACCESS KERN_INVALID_ADDRESS
yaşıyorum, ancak kaynağı işaret edemiyorum. Ancak, ben merak ediyorum bu olabilir eğer:dealloc içinde dispatch_async güvenli midir?
Bir audio_queue böyle yarattık:
dispatch_async(_audio_queue, ^{
_audioPlayer = [[AudioPlayer alloc] init];
});
: Ben oluşturmak ve bir nesne _audioPlayer
denilen erişmek için kullandığınız
_audio_queue = dispatch_queue_create("AudioQueue", nil);
ses oyuncusu MovieView
aittir:
@implementation MovieView
{
AudioPlayer *_audioPlayer
}
Daha sonra, MovieView
arasında dealloc
yöntemde, sahip:
- (void)dealloc
{
dispatch_async(_audio_queue, ^{
[_audioPlayer destroy];
});
}
bu kabul edilebilir mi? Ben bloğun çağrıldığı zaman, MovieView
zaten ayrılmış olduğunu ve _audioPlayer
erişmeye çalışırken, artık yok olduğunu düşünüyorum. Bu dava mı?
Benim çökme raporu sadece diyor ki:
MovieView.m line 0
__destroy_helper_block_
"_audioPlayer" uygulamasının hala var olup olmadığını görmek için bu noktaya bir kesme noktası koydunuz mu? – Dima
Kazaları sürekli olarak çoğaltamıyorum. Şu anda orada bir kesme noktası koyarsam, evet, '_audioPlayer' hala var. – Snowman
Hatalı erişimin gerçekleştiği bir satır numaranız var mı? – Dima