- [MPTransportButton _isChargeEnabled]: ข้อความที่ถูกส่งไปยังอินสแตนซ์ที่จัดสรรคืน 0x4bf6cb0

ฉันใช้ MPMoviePlayerViewController เพื่อเล่นวิดีโอ โปรแกรมเล่นวิดีโอจะแสดงเป็น presentModalViewController หากวิดีโอจบลงและยอดดูถูกปิดไป ฉันได้รับข้อผิดพลาด:

 -[MPTransportButton _isChargeEnabled]: message sent to deallocated instance 0x4bf6cb0

แต่ฉันไม่รู้ว่าข้อผิดพลาดเกิดขึ้นที่ไหน

ขอบคุณล่วงหน้า.

การทักทาย,

แพทริค


person Schumi    schedule 04.10.2011    source แหล่งที่มา


คำตอบ (3)


ข้อความแจ้งว่า: อ็อบเจ็กต์ของคลาส MPTransportButton ซึ่งมีค่าถูกเก็บไว้ที่ 0x4bf6cb0 ได้รับการเผยแพร่แล้วใช้อีกครั้ง

ดังนั้น คุณต้องค้นหาอ็อบเจ็กต์ประเภท MPTransportButton ที่ถูกปล่อยออกมาและนำกลับมาใช้ใหม่

person Nekto    schedule 04.10.2011
comment
แม้ว่าคำตอบนี้ถูกต้องในทางเทคนิค แต่ก็ไม่ได้ช่วยอธิบายได้ว่าทำไม MPTransportButton (เห็นได้ชัดว่าเป็นคลาสส่วนตัวจาก Apple) จึงยังคงมีการอ้างอิงอยู่ ลองดู jotaefe's และคำตอบของฉันเองเพื่อทำความเข้าใจคำถามนั้นเพิ่มเติม - person kalperin; 22.12.2011

คุณอาจพยายามปิดโปรแกรมเล่นวิดีโอหลายครั้งเมื่อลบโมดอลออก

ตรวจสอบให้แน่ใจว่าคุณยกเลิกการลงทะเบียนจากการแจ้งเตือนทั้งหมดก่อนที่จะปิดมุมมองผู้เล่นด้วย (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackStateDidChangeNotification, ...)

- (void)closeVideoPlayer
{
       [[NSNotificationCenter defaultCenter] removeObserver:self];  

       if (mp)
       {                
            [mp stop];
            [mp.view removeFromSuperview];
            mp = nil;       

            [self dismissModalViewControllerAnimated:animated];
        }
}

ขอให้โชคดี!

person Juan Fran Jimenez    schedule 15.11.2011

เกี่ยวข้องกับคำตอบของ jotaefe: ตรวจสอบเพื่อให้แน่ใจว่ามุมมองของ MPMoviePlayerController ของคุณไม่ยังคงอยู่ในลำดับชั้นหลังจากที่ MPMoviePlayerController เปิดตัวแล้ว สถานการณ์นี้อาจทำให้เกิดการอ้างอิงแบบห้อยต่อมุมมองย่อยของ MPMoviePlayerController ของคุณ ซึ่งอาจทำให้เกิดข้อผิดพลาด "ข้อความที่ส่งไปยังอินสแตนซ์ที่จัดสรรคืน" ของซอมบี้

person kalperin    schedule 22.12.2011