Mobile App/iOS
Swift 4 - CustomView (메모리 누수 해결하기.)
bugtype
2019. 3. 9. 15:11
Memory leak 해결방법까지 같이 넣겠습니다.
필요한 파일
CustomView.swift
CustomView.xib
[1] CustomView.swift 파일 생성
class CustomView: UIView {
class func instanceFromNib() -> UIView {
return UINib(nibName: "CustomView", bundle: nil)
.instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}[2] CustomView.xib 파일 생성 후 설정.
Custom Class -> Class 에다가 CustomView 입력.
[3] 버튼 클릭시 화면전환을 하고 싶으면. 버튼 클릭 이벤트에다가 추가.
let sideView = CustomView.instanceFromNib()
sideView.frame = self.view.frame
subUiView.addSubview(sideView)그러면 끝입니다.!
================================================
하지만 화면전환을 1번 화면 ,2번 화면 여러번 바꿀경우. 화면위에 올려지는 방식이기에 메모리에 계속 쌓이게 됩니다.
이것을 해결하기 위해서는 willRemoveSubview 을 이용하여 view를 제거하면 됩니다.
@IBOutlet weak var subUiView: UIView!
var check:Bool=false // 버튼 클릭시 마다 화면 전환
let sideView = CustomView.instanceFromNib()
let sideView2 = CustomView2.instanceFromNib()
@IBAction func changeButton(_ sender: Any) {
if(check){
sideView.frame = self.view.frame
subUiView.willRemoveSubview(sideView2)
subUiView.addSubview(sideView)
} else {
sideView2.frame = self.view.frame
subUiView.willRemoveSubview(sideView)
subUiView.addSubview(sideView2)
check = !check
}
}willRemoveSubview 안써도 되는거 같네요. 메모리 확인해보니..