Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[10주차] Strong 과 Weak 참조 방식에 대해 설명하시오. #23

Open
kangddong opened this issue Jan 30, 2023 · 1 comment
Open

Comments

@kangddong
Copy link
Contributor

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

@kangddong
Copy link
Contributor Author

Strong

  • 해당 인스턴스의 소유권을 가집니다.
  • 자신이 참조하는 인스턴스의 retain count를 증가시킵니다.
  • 값 지정 시점에 retain이 되고, 참조가 종료되는 시점에 release가 됩니다.
  • 선언할 때 아무것도 적어주지 않으면 default로 strong이 됩니다.
  • 강한(strong) 참조의 규칙을 모르고 사용하게 되면 메모리 누수(Memory Leak)가 발생할 수 있습니다.
    • 위 문제를 발생시키는 원인이 "순환 참조" 입니다.
    • 위 해결책이 바로 "약한참조(weak, unowned)" 입니다.

Weak

  • 해당 인스턴스의 소유권을 가지지 않고, 주소값만 가지고 있는 포인터 개념입니다.
  • 자신이 참조하는 인스턴스의 retain count를 증가시키지 않습니다.
    • release도 발생하지 않게 됩니다.
  • 자신이 참조는 하지만 weak 메모리를 해제시킬 수 있는 권한은 다른 클래스에 있습니다.
  • 메모리가 해제될 경우 자동으로 레퍼런스가 nil로 초기화를 해줍니다.
  • weak 속성을 사용하는 객체는 항상 optional 타입이어야 합니다.
    • 해당 객체가 nil일 수 있기 때문입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant