며칠 전에 나는 here이라는 문항을 게시했으며 아직 답변을 찾지 못했습니다. 나는 그것이 버그라고 생각하고 그것이 미래에 해결 될 수 있지만 도움이 될 수는 없지만 그것이 나 자신을 잘못하고있는 것일 수도 있다고 생각합니다.UISwitch deinit는 결코 호출되지 않았습니다.
이 질문을 통해 버그인지 확인할 수 있기를 바래서 프로젝트에 대해 계속 걱정하지 않고 계속 작업 할 수 있습니다. 이 질문이 반복적 인 경우 즉시 질문을 삭제합니다.
UISwitch
을 서브 클래 싱하여 deinit
을 추가하면 할당 해제 시점을 알 수 있습니다.
class CustomSwitch: UISwitch { deinit {print("Switch has been deinitialized")} }
가 그럼 난 내보기 컨트롤러에 속성을 추가했습니다 :
func removeSwitch() {
print(customSwitch)
customSwitch = nil
print(customSwitch)
}
그리고 :
var customSwitch: CustomSwitch? = CustomSwitch()
그것을 테스트하려면, 나는 다음과 같은 기능 버튼을 추가했습니다 콘솔에서 다음과 같이 인쇄하십시오.
Optional(<Debugging.CustomSwitch: 0x7f9ec91083c0; baseClass = UISwitch; frame = (0 0; 51 31); layer = <CALayer: 0x6100000384a0>>)
nil
초기화 메시지가 인쇄되지 않고 악기에 customSwitch가 여전히 메모리에 있음이 표시됩니다. 나는 이것에 대해 찾을 수
있는 유일한 방법은 this
아이폰 OS 10.2에서 해결 말한다? –
스위치가보기에 추가됩니까? 그렇다면 뷰는 메모리를 잃지 않을 것입니다. 이렇게하면 즉각적인 권한을 얻어야합니다. weak var customSwitch : CustomSwitch? = 강력한 참조가 없기 때문에 CustomSwitch(). –
아니요보기에 추가되지 않습니다. 그것이 있었다고해도, 그것은 중요하지 않아야합니다. 내 버그 보고서가 중복으로 표시 되었기 때문에 알려진 버그입니다. –