iphone 비디오의 AVPlayer를 사용하여 비디오를 재생하려고하는데 비디오가 재생되는 비디오 컨트롤러를 닫으면 응용 프로그램이 고장나요 AVPLayer를 닫고 수퍼 뷰에서 제거하는 방법을 도와주세요.viewcontroller를 닫은 후 AVPlayer를 중지하고 superview에서 제거하는 방법은 무엇입니까?
답변
avPlayerLayer가 avPlayer와 상호 작용하는 유일한 클래스 인 경우이 클래스가 코드 외부에서이를 사용하지 않는 한, 현재 사용하고있는 클래스의 속성으로 참조를 유지 관리 할 필요가 없습니다. 공유 됨). 사실, 이것이 아마도 당신이 기대하는대로 작동하지 않는 이유 일 것입니다.
클립이 계속 재생되는 이유는 플레이어가 할당 취소되지 않기 때문입니다. 클래스에 강력한 속성을 가진 속성을 만들면,이 속성을 전달하는 AVPlayerLayer 클래스에서 다시 소유하게됩니다. 따라서 AVPlayerLayer가 할당 해제되면 AVPlayer는 하나의 소유자를 잃게됩니다. 하지만 여전히 소유자 (클래스)가 있으므로 할당이 해제되지 않고 계속 재생됩니다. 여기 해결책은 * avPlayer에 대한 소유 자산을 모두 제거하는 것입니다. 너는 필요 없어. AVPlayer를 만들어 AVPlayerLayer에 전달합니다. 그것이 모두 필요한 것입니다. 동작하지만 문제를 해결할 수있는 당신이 할 수있는 다른
뭔가, 전화 :
[avPlayer pause]
당신의 AVPlayerLayer의 할당 해제의 방법에서.
Re : Strong vs. Weak 참조 : 강력한 참조는 소유권을 의미합니다.
@property (retain) NSObject *iAmRetainedWhenProperyIsAssigned;
: ARC는 관리 메모리이기 때문에, 모든 즉, 보내고 당신이 이전에 코드 또는 속성했을 것이라고했을 【대상 자료] ING [객체가 유지]를하고 있습니다 이제는 ARC를 사용하여 간단한 사용자는 코드에서 또는 속성을 정의 할 때 retain 또는 release와 같은 단어를 사용하지 않습니다. 그러나 우리는 여전히 소프트웨어를 설계합니다. ARC는 똑똑하지만, 우리가 정의하는 관계의 구조적 함의를 추론 할 정도로 똑똑하지 않습니다. 속성이 참조하는 객체에 대한 참조를 클래스가 "소유"한다고 계속 말해야합니다. 어느 가장 기본적인 측면에서 우리를 감소 :
이(강한) 특성에 사전 ARC를 의미 (유지) 어떤 아크 의미는 (소유는/유지)
은 (약한) (지정) 무엇을 의미하는 아크 의미 (예 : 소유하지 않았거나 보유하지 않음)
마지막 답은 그 플레이어 개체가 메모리에서 어떻게 자유롭게 실행되는지 Xcode 5.1 이전에 어떻게 정의했는지 이해하는 것이 었습니다.
이제는 AVPlayer
을 중지하고 superview에서 제거하는 방법에 대한 적절한 대답을 제공해 드리겠습니다. 사실 AVPlayer
에서 정지 메소드가 없습니다. 대신 AVPlayer
오브젝트에 의해 위임 된 일시 정지 된 것을 사용해야합니다.
그냥이 코드를 추가
[self.videoPlayer Pause];[self.avPlayerLayer removefromsuperlayer];self.videoPlayer = nil;
이 솔루션은 개체를 해제하기 전에 관찰자를 제거하는 것이었다. 멤버에 대해 새 객체를 교체하거나 할당하면 이전 객체를 릴리스하므로 먼저 옵저버를 제거해야합니다. [player removeObserver : self forKeyPath : @ "status"]; - Nandan Deshmukh
- 1. Superview에서 하위보기를 제거하는 방법?
- 2. Superview에서 ButtonClick 이벤트에 대한 ViewController를 제거하십시오.
- 3. UITapGestureRecognizer가 viewController를 닫은 후 오류를 발생시킵니다.
- 4. 탭을 닫은 후 DockManager에서 LogicalChildren을 제거하는 방법은 무엇입니까?
- 5. UIViewController nsnotification을받은 후 superview에서 제거합니다.
- 6. viewController를 닫은 후 내 tableView의 contentOffset이 (0, -64)
- 7. MediaPlayerViewController를 닫은 후에 VIewController를 닫을 수 없습니다.
- 8. AVPlayer Ios를 중지하고 periodicTimeObserverForInterval을 제거하는 방법
- 9. 닫은 후 양식 값을 재설정하는 방법은 무엇입니까?
- 10. ViewController를 모달로 표시하는 방법과 ViewController를 닫은 후 Delegate없이 콜백 함수/블록을 실행하는 방법?
- 11. UIPopoverController : 해제 된보기를 닫은 후
- 12. 닫은 후 TFrame을 해제하는 방법
- 13. iOS - 응용 프로그램 윈도우 계층에서 모든 ViewController를 제거하는 방법?
- 14. ipad에서 ModalView를 닫은 후 MasterView에서 함수 호출
- 15. SubView 추가 후 SuperView에서 감동 받기
- 16. 탐색 컨트롤러 스택에서 모든 ViewController를 제거하는 가장 좋은 방법은
- 17. 특정 시간에 AVPlayer를 중지하는 방법은 무엇입니까?
- 18. ios에서 여러 개의 하위보기가있는 superview에서 특정 하위보기를 제거하는 방법
- 19. 런타임에 Viewcontroller를 숨기는 방법은 무엇입니까?
- 20. 특정보기로 viewController를 푸시하는 방법은 무엇입니까?
- 21. ViewController를 강제로 언로드하는 방법은 무엇입니까?
- 22. 활동을 닫은 후 이전 조각을 새로 고치는 방법은 무엇입니까?
- 23. 배열이 파일을 닫은 후 범위를 벗어나는 것을 방지하는 방법은 무엇입니까?
- 24. UIMenuController를 닫은 후 UITableViewCell을 선택 취소하는 방법은 무엇입니까?
- 25. Jquery 내부 팝업을 닫은 후 외부 팝업을 강조하는 방법은 무엇입니까?
- 26. android 대화 상자 : 활동을 닫은 후 Dialog를 반환하는 방법은 무엇입니까?
- 27. ssh 연결을 닫은 후 작업을 계속 실행하는 방법은 무엇입니까?
- 28. iPhone을 닫은 후 위치 인증 팝업을 다시 표시하는 방법은 무엇입니까?
- 29. 프로젝트를 닫은 후 Intelli 아이디어가 메모리를 줄이는 방법은 무엇입니까?
- 30. 응용 프로그램을 닫은 후 LTPA 토큰을 처리하는 방법은 무엇입니까?
플레이어가 멈 춥니 다. fine.player도 제거됩니다.하지만 내보기 컨트롤러를 무시하면 폴링 오류가 발생합니다.미리 감사드립니다 이유 : 'AVPlayerItem 클래스의 인스턴스 0x7f9e50d72dc0은 키 값 옵저버가 등록되어있는 동안 할당이 해제되었습니다. 현재 관찰 정보 : ( 컨텍스트 : 0x102296318, 속성 : 0x7f9e50d5a350> –
해결책은 객체를 해제하기 전에 옵저버를 제거하십시오. 구성원에 대해 새 객체를 교체하거나 할당하면 이전 객체를 해제하므로 먼저 관찰자를 제거해야합니다. [player removeObserver : self forKeyPath : @ "status "]; –
네가 맞다. –