2016-04-12 135 views
0

[當事故發生堆棧的擷取畫面] [1][AVRetainReleaseWeakReference釋放]:消息發送到釋放的實例0x171a2cd40

這發生後:

[self.sampleBufferDisplayLayer stopRequestingMediaData]; [self.sampleBufferDisplayLayer removeFromSuperlayer];

而self.sampleBufferDisplayLayer的地址是0x171a2d040;這是否意味着已經被釋放兩次的實例(0x171a2cd40)是AVSampleBufferDisplayLayer對象內的東西?那麼爲什麼我應該對這個內部對象的兩次dealloc錯誤負責?有人會因此而受苦嗎?

0 libsystem_malloc.dylib 0x0000000196cbd9cc 0x196cb8000 + 22988 
1 TTKanKan     0x00000001008733b8 0x1000e0000 + 7943096 
2 TTKanKan     0x0000000100864584 0x1000e0000 + 7882116 
3 TTKanKan     0x000000010085f1e0 0x1000e0000 + 7860704 
4 TTKanKan     0x000000010085f36c 0x1000e0000 + 7861100 
5 TTKanKan     0x000000010085edd4 0x1000e0000 + 7859668 
6 TTKanKan     0x000000010085f7b8 0x1000e0000 + 7862200 
7 TTKanKan     0x000000010085f5fc 0x1000e0000 + 7861756 
8 TTKanKan     0x000000010085ef3c 0x1000e0000 + 7860028 
9 TTKanKan     0x000000010085ecac 0x1000e0000 + 7859372 
10 libsystem_pthread.dylib 0x0000000196d2bdb4 _pthread_body + 160 
11 libsystem_pthread.dylib 0x0000000196d2bd10 _pthread_start + 156 
12 libsystem_pthread.dylib 0x0000000196d28ee4 thread_start + 0 

回答

1

我被刪除AVSampleBufferDisplayLayer相同釋放和分配在另一個線程修復它,但我不得不使用@synchronized(個體經營)他們在不同的線程同步。而現在AVSampleBufferDisplayLayer的重新分配和分配只發生在一個線程中。

+0

我也遇到過。我的應用程序在iOS9(某些事件)後開始崩潰,而不是在'nil-object'(AVSampleBufferDisplayLayer)返回'nil'或'nil',而是應用程序崩潰。這違背了我所知道的所有Objective-C規則(即使try/catch也不會阻止應用程序崩潰)。 –

相關問題