스택뷰에 새로운 뷰를 추가할때는 addArrangedSubview()를 사용하고
스택뷰에서 서브뷰를 제거할때에는 removeArrangedSubview()를 사용한다.
removeArrangedSubview()를 사용해서 서브뷰를 제거하게 되면 화면에 보이는 경우도 있다고 한다.
(즉 메모리에서 제거되지 않은 상태로 메모리 릭이 발생 할 수 있음)
먼저 공식 문서에 나와있는 내용을 확인해 보면
removeArrangedSubview()를 사용할 때 명시적으로 removeFromSuperview()를 사용하라는 내용이 있다.
if let memberInfoView = editMemberInfoStackView.arrangedSubviews[index] as? EditMemberInfoView {
editMemberInfoStackView.removeArrangedSubview(memberInfoView)
memberInfoView.removeFromSuperview()
}
위 코드처럼
removeArrangedSubview()를 먼저 해준 후 제거할 뷰를 removeFromSuperview()를 통해 명시적으로 제거해주어야 메모리릭이 발생하지 않는다.
출처 : https://developer.apple.com/documentation/uikit/uistackview/1616235-removearrangedsubview
removeArrangedSubview(_:) | Apple Developer Documentation
Removes the provided view from the stack’s array of arranged subviews.
developer.apple.com
'iOS' 카테고리의 다른 글
| collectionView - 가로방향으로 셀 3개 넣기 (0) | 2024.01.28 |
|---|---|
| iOS - 공유하기 기능 (0) | 2023.08.06 |
| iOS - 커스텀뷰를 테이블뷰와 비슷하게 사용하기 (0) | 2023.07.11 |
| iOS - 텍스트의 특정 부분만 Bold 처리하기 (0) | 2023.06.11 |
| NavigationController 사용시 status Bar Style 바꾸기 (0) | 2022.12.15 |