Open GODNOEL opened 2 years ago
코드를 실행해보고 싶은데 현재 어느 브랜치에서 작업중이신지 알려주실 수 있나요??
우선 비슷한 에러인 것 같아 링크 첨부합니다...!!! https://stackoverflow.com/questions/49021054/swift-access-lazy-var-endless-loop-cause-crash?noredirect=1&lq=1
lazy var를 언제 사용하면 좋은지에 대한 좋은 글이 있어서 첨부합니다!! https://mikebuss.com/2014/06/22/lazy-initialization-swift/
제가.. 오타를 내고 그걸 못 찾아 냈습니다... 열심히 저와 함깨 고민해주신 갓로라 @compuTasha 너무 감사하고..🙇♀️ 실수를 발견해주신 갓듀나 @YoonAh-dev 넘넘 감사합니다..🙇♀️
class SearchViewController: UIViewController {
// MARK: - property
....
// 문제 해결!
private var stackView: UIStackView = {
let stackView = UIStackView()
stackView.axis = .vertical
stackView.distribution = .equalSpacing
stackView.spacing = 0.0
stackView.translatesAutoresizingMaskIntoConstraints = false
let searchBarSectionView = UIView()
let recentProductSectionView = UIView()
let categorySectionView = UIView()
let campaignSectionView = UIView()
let popularProductSectionVie = UIView()
let loginSectionView = UIView()
let informationSectionView = UIView()
searchBarSectionView.backgroundColor = .red
recentProductSectionView.backgroundColor = .yellow
categorySectionView.backgroundColor = .orange
[
searchBarSectionView,
recentProductSectionView,
categorySectionView,
campaignSectionView,
popularProductSectionVie,
loginSectionView,
informationSectionView
].forEach {
$0.heightAnchor.constraint(equalToConstant: 500).isActive = true
stackView.addArrangedSubview($0)
}
return stackView
}()
‼️ 문제의 배경
Noel-Student-IKEA의 4번째 PR에 스누피의 코드리뷰 내용을 반영하려고 코드를 수정했습니다.
stackView
만lazy
로 선언하고 그 안에 요소들은let
으로 줘서 의미가 없다는 스누피의 의견!원문 : https://github.com/SnoopClass/Noel-Student-IKEA/pull/4#discussion_r986066265
💻 기존 코드
😱 문제 상황
그래서
stackView
안에UIView
화면들을 선언후 추가하는 형태의 코드로 수정했습니다.💻수정코드
그랬더니 아래 오류 발생‼️하고 시뮬레이션에 stackView 영역도 안잡히는 현상이 발생하는데요
찾아보니 해당 오류는 메모리 문제 같은데 어디가 잘못된거고 어떻게 해결할 수 있을지 모르겠습니다. 지금 forEach 부분에서 문제가 발생하는 것 같은데 (map으로 변경해도 동일 문제 발생) 메모리에 영향을 갈만한 코드인지 잘 모르겠어서 여러분의 도움이 필요합니다..
(참고) 온라인 강의에서도 저런식으로 구현한 코드가 있어서 어떤 부분에서 문제가 발생하는지.. 잘 모르겠습니다..!