찾다

 >  Q&A  >  본문

object-c - Masonry가 순환 참조를 발생시키지 않는 이유에 대한 질문

코드는 예시일 뿐입니다. 제가 이해한 것이 맞는지 모르겠습니다.

으아아아

블록은 self를 보유하지만 self.view는 이 블록을 보유하지 않습니다. 왜냐하면 Masonry의 소스 코드는 다음과 같기 때문입니다.

으아아아

그냥 블록(constrainMaker)입니다. self.block = block(constrainMaker)로 변경되면 뷰에도 블록이 유지되나요?

高洛峰高洛峰2836일 전689

모든 응답(1)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-05-02 09:32:40

    블록이 반드시 순환 참조를 유발한다는 것은 사실이 아닙니다. 순환 참조인지 여부는 서로 강한 참조를 유지하는지 여부에 따라 다릅니다. self가 블록에 사용되면 블록은 self에 대한 참조를 유지하지만 self는 블록을 직접적 또는 간접적으로 유지하지 않으므로 순환 참조가 발생하지 않습니다.

    당신의 이해가 정확합니다.

    회신하다
    0
  • 취소회신하다