iOS. assign vs weak

sanghee·2021년 12월 23일
0
post-thumbnail

매주 진행하는 면접스터디에서 아래의 질문들에 대한 정리를 모은 글입니다.
Interview_Question_for_Beginner/iOS

📌assign

객체의 retain count를 증가시키지 않는다. 외부에서 retain count를 감소시켜 객체가 소멸될 수 있기 때문에 Int와 같은 Primitive Type에 적합하다.

객체가 소멸되어도 포인터 값이 변하지 않는다.

📌weak

객체가 해제되는 시점에 포인터 값이 nil이 된다. assign의 문제점은 객체가 해제되어도 포인터값이 남아있어 접근하려다가 죽는 경우가 생긴다는 점이다. Objective-C는 기본적으로 nil에 접근할 때는 에러가 발생하지 않는다.

dealloc(deinit)

기존 OOP의 파괴자(Destructor)와 비슷한 마무리 용도의 기능으로 deinit이 있다. Objective-C의 dealloc 메소드와 비슷한 용도이다.

weak는 마지막 강한 참조가 더이상 객체를 가리키지 않으면 객체는 할당이 해제되고 모든 약한 참조는 해제된다.

profile
👩‍💻

0개의 댓글