SkeletonView는 iOS 앱에서 로딩 상태를 시각적으로 표시하기 위한 뷰 라이브러리입니다. 이는 주로 데이터를 가져오거나 로딩하는 동안 사용자에게 로딩 상태를 알려주는데 사용됩니다. 하지만 SkeletonView를 사용할 때 메모리 관리에 주의해야 합니다. 이 글에서는 Swift에서 SkeletonView를 사용할 때 메모리 관리를 위한 몇 가지 방법을 소개하겠습니다.
1. 뷰 컨트롤러에서 SkeletonView 사용
SkeletonView는 주로 뷰 컨트롤러에서 사용되는 경우가 많습니다. 이 경우, SkeletonView를 뷰 컨트롤러의 수명 주기와 관련해서 제대로 관리해야 합니다.
1-1. 메모리 해제
SkeletonView를 사용하는 동안 메모리 누수를 방지하기 위해, 뷰 컨트롤러가 해제될 때 SkeletonView를 정리해야 합니다. 이를 위해 viewWillDisappear(_:)
메서드를 사용할 수 있습니다. 예를 들어, 다음과 같이 SkeletonView를 해제할 수 있습니다.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// SkeletonView 해제
tableView.hideSkeleton(reloadDataAfter: true)
}
1-2. 불필요한 애니메이션 중지
SkeletonView에는 로딩 시 애니메이션이 포함되어 있습니다. 그러나 뷰 컨트롤러가 화면에서 사라질 때 이러한 애니메이션을 중지해야 합니다. viewWillDisappear(_:)
메서드에서 애니메이션을 중지할 수 있습니다. 예를 들어, 다음과 같이 애니메이션을 중지할 수 있습니다.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// SkeletonView 애니메이션 중지
tableView.stopSkeletonAnimation()
}
2. 셀에서 SkeletonView 사용
SkeletonView를 테이블 뷰 또는 컬렉션 뷰 셀에서 사용한다면, 셀의 재사용에 따른 메모리 관리도 고려해야 합니다.
2-1. 셀 재사용 전 SkeletonView 해제
셀이 재사용되기 전에 SkeletonView를 해제해야 합니다. prepareForReuse()
메서드를 사용하여 재사용 전에 SkeletonView를 해제할 수 있습니다. 예를 들어, 다음과 같이 SkeletonView를 해제할 수 있습니다.
override func prepareForReuse() {
super.prepareForReuse()
// SkeletonView 해제
avatarImageView.hideSkeleton()
nameLabel.hideSkeleton()
}
2-2. 다른 데이터로 셀 업데이트 시 SkeletonView 중지
셀이 다른 데이터로 업데이트될 때, 이전 데이터로 인해 보여지는 SkeletonView 애니메이션을 중지해야 합니다. setData(_:)
메서드 또는 데이터를 설정하는 메서드에서 SkeletonView 애니메이션을 중지할 수 있습니다. 예를 들어, 다음과 같이 SkeletonView 애니메이션을 중지할 수 있습니다.
func setData(_ data: Data) {
// SkeletonView 애니메이션 중지
avatarImageView.stopSkeletonAnimation()
// 데이터 설정
nameLabel.text = data.name
// ...
}
3. SkeletonView 사용 중 제한하기
SkeletonView를 사용 중인 동안 사용자가 상호 작용하여 다른 뷰로 이동하게 되면, SkeletonView의 사용을 제한하는 것이 좋습니다. 이를 통해 불필요한 리소스 소모를 방지할 수 있습니다. 예를 들어, 다음과 같이 사용자 상호 작용 중에만 SkeletonView를 표시하도록 할 수 있습니다.
skeletonView.isSkeletonable = UIApplication.shared.applicationState != .active
위의 코드는 애플리케이션이 활성 상태일 때만 SkeletonView를 표시하도록 설정합니다.
결론
Swift에서 SkeletonView를 사용할 때, 메모리 관리에 주의해야 합니다. 뷰 컨트롤러나 셀의 수명 주기와 관련된 메서드를 활용하여 SkeletonView의 해제, 애니메이션 중지 및 재사용 전 SkeletonView 해제를 적절하게 처리해야 합니다. SkeletonView 사용 중에는 필요한 경우에만 표시되도록 제한하는 것이 좋습니다.
참고 자료:
- https://github.com/Juanpe/SkeletonView