weak 의 실현 원리

1602 단어 iOS
약점 을 실현 하 다
weak 의 역할weak 키워드 의 역할 이 약 한 인용 으로 인용 대상 의 계수 기 는 하 나 를 추가 하지 않 고 인용 대상 이 풀 려 날 때 자동 으로 nil 으로 설정 된다.
어떻게 weak 을 실현 합 니까?
  • 이제 우 리 는 weak 의 사고방식 을 정리 할 것 이다.
  • 전체 시스템 에 많은 대상 이 존재 한다. 이런 대상 들 은 약 하 게 인 용 될 수 있다. 그러면 우 리 는 약 하 게 인 용 된 대상 을 수용 할 용기 가 필요 하 다. 예 를 들 어 배열 이다. 여기 서 이 용기 의 데이터 구 조 를 objectContainerDataStructure 로 표시 해 야 한다.
  • 한 대상 이 여러 번 약 하 게 인 용 될 수 있 습 니 다. 이 대상 이 소각 되 었 을 때 우 리 는 이 대상 의 모든 약 한 인용 을 찾 아야 합 니 다. 그래서 우 리 는 이 약 한 인용 주소 (즉 지침) 를 한 용기 에 넣 어야 합 니 다. 예 를 들 어 배열 등 약 한 인용 주소 의 데이터 구 조 를 pointerContainerDataStructure 로 표시 해 야 합 니 다.
  • 대상 이 더 이상 강 한 인용 을 받 지 않 을 때 소각 해 야 할 때 우 리 는 이 대상 을 통 해 objectContainerDataStructure 해당 하 는 pointerContainerDataStructure 을 찾 아 이 대상 의 모든 약 한 인용 을 찾 아 nil 로 설정 해 야 한다.
  • 위의 절 차 를 통 해 우 리 는 이런 데이터 구 조 를 얻 을 수 있다.
  • pointerContainerDataStructure 한 대상 의 약 한 인용 주소 만 수용 하기 때문에 배열 을 사용 하면 된다.
  • objectContainerDataStructure 는 하나의 key-value 데이터 구조 로 대상 을 key 로 하고 대상 의 메모리 주 소 는 가장 좋 은 선택 이다.
  • iOS 에서 자주 사용 하 는 key-value 데이터 구 조 는 바로 사전 Dictionary 이다. 여기 서 우리 의 key 은 수치 대상 이 고 value 은 수치 배열 대상 이 므 로 해시 표 로 실현 할 수 있다.
  • 총화
  • weak 을 실현 하기 위해 서 우 리 는 이러한 약 한 인용 표 가 필요 하 다.
  • 표 의 데이터 구 조 는 해시 표 이다.
  • 표 의 key 는 대상 의 메모리 주소 이다.
  • value 은 이 대상 을 가리 키 는 모든 약 한 인용 지침 이다.
  • 좋은 웹페이지 즐겨찾기