샘성의 iOS 개발 일지

Strong과 Weak 참조 방식에 대해 설명하시오. 본문

iOS/면접

Strong과 Weak 참조 방식에 대해 설명하시오.

SamusesApple 2023. 6. 15. 23:05
728x90

1. Strong 참조 (강한 참조)

  • 해당 인스턴스의 소유권을 가짐
  • 자신이 참조하는 인스턴스의 reference count를 증가시킴 
  • 값 지정 시점에 retain(RC +1)이 되고, 참조가 종료되는 시점에 release (RC -1)가 됨
  • 앞에 weak / unowned를 적지 않는다면 default로 강한 참조를 하게 됨.
  • 강한 참조의 규칙을 모르고 사용하게 되면 메모리 누수(Memory Leak)가 발생할 수 있음.

 

2. Weak 참조 (약한 참조)

  • 해당 인스턴스의 소유권을 갖지 않음
  • 자신이 참조하는 reference count를 증가시키지 않음
  • 선언할 때 앞에 weak 를 붙여서 사용
  • 옵셔널 타입으로만 선언 가능 (참조하고 있던 인스턴스가 사라지면 속성을 nil을 할당 하기 때문)
  • 강한 참조로 인해 발생하는 순환참조를 방지할 수 있음

 

3. 비소유 참조(Unowned Reference)

  • 하나의 객체가 다른 객체를 참조하더라도 RC 숫자를 올리지 않는 참조 방식
  • 선언하는 변수 앞에 unowned 키워드를 붙여 사용 
  • 비소유 참조로 참조하고 있던 인스턴스가 사라지면 해당 인스턴스를 참조하던 속성이 nil로 초기화 되지 않고 에러 발생
    속성에 nil을 할당하는 코드 구현 필수
  • nil 초기화되는 스턴스보다 훨씬  짧게 존재할것이 보장 될 때 unowned 사용 
728x90