dismissViewControll이 호출 된 후 프로토콜 및 대리자 메서드를 사용하여 이전 VC로 데이터를 다시 전달했습니다. 아래는 가장 튜토리얼 그러나 약한 위임자 및 클래스 프로토콜
protocol someVCDelegate {
func somefunction()
}
var delegate: someVCDelegate!
을 쓴 그 방법이 아니다 나는 그것을 일반적으로하는 방법이다, 나는 그것을 작성하는이 클래스/약한 접근을 가로 질러왔다.
protocol someVCDelegate : class {
func somefunction()
}
weak var delegate: someVCDelegate!
약점은 ARC와 관련되어 있으며주기 유지를 피하는 것으로 알고 있습니다. 그러나, 나는 모든 경우 에서처럼 그것을 필요로 할 때 나는 확실하지 않다. 약한 대의원 작품을 찾지 않는다. (VC는 deinit을한다.) 어떤 상황에서 약한 대의원이 필요한가요? 또한 왜 "!" 약한 후 일반적으로 그것은 "?" 약한 권리 후에?
언제든지 위임을하지 않으시겠습니까? 또는 이전 VC는 다음 VC에 대한 참조를 유지하지 않습니까? 객체가 적어도 하나의 강력한 참조를 가지고 있다면, ARC는 그것을 정리하지 않을 것입니다. 따라서 이전 VC에 다음 VC에 대한 참조가 있고 다음 VC에 이전에 대한 (강력한) 대리자 참조가있는 경우 ARC는 메모리 누수를 일으키는 다른 참조를 모두 잃어 버리면 삭제하지 않을 것입니다. – Fonix
대리인을 만드는 것이 항상 좋은 습관입니다. 어쨌든 약한, 그것의 어렵지 않고 미래에 몇 가지 두통을 저장할 수 있습니다. 나중에 문제가된다면 디버그하기가 어려울 수 있습니다. – Fonix
오늘 오늘 읽어보십시오. 그것은 나를위한 약간의 느슨한 목적을 명확히했다 : ARC. https://www.raywenderlich.com/134411/arc-memory-management-swift – Adrian