23.08.31 목
·
iOS/🌱 SeSAC
✅ deinit 메모리 상에서 뷰컨이 필요 없어져서 메모리 상에서 사라졌는지 확인할 때 사용 deinit { print("deinit", self) } 메모리 누수를 찾아볼 수 있는 방법이다. back button 클릭하여 뷰가 사라질 때 deinit 호출 됨 viewcontroller에 작성했던 collection view의 설정들을 view 파일에서 작성하기 🚨view에서 화면 전환이 불가능 화면 전환 관련 코드들은 viewController가 가지고 있기 때문에 view에서 작성 시 didSelectItem에서 화면 전환을 구현할 수 없다. 값 전달 활용 - protocol protocol을 활용하여 셀을 선택 함을 알려줌 1. protocol 생성 2. delegate 생성 3. 셀 선택 시 vi..
23.08.30 수
·
iOS/🌱 SeSAC
💡 싱글톤 패턴 클래스는 어디서든 인스턴스 생성을 할 수 있다 init이 internal로 선언되어 있기 때문 아무 곳에서나 생성이 되지 않게 하기 위해 private으로 접근 제어 수준을 높이자 💡 convenience init searchBar, button 등은 왜 초기화 할 때 frame 지정을 안해줘도 동작이 될까? 초기화 구문을 구현할 때 convenience를 붙인다면 디폴트 값을 지정해줄 수 있다. 초기화 시 매개변수를 안보이게 내부적으로 디폴트 값이 구현되어 있고, 초기화 시 디폴트 값으로 초기화를 한다. 💡 webView 웹 뷰에서 네비게이션 컨트롤러가 처음에는 투명, 스크롤 하면 불투명 ✅ NavigationBar Custom 스크롤x / 스크롤 내렸을 때 navigationContr..
23.08.29 화
·
iOS/🌱 SeSAC
💡 addObserver 중복 ) addObserver는 한 번만 등록되도록 배치해야 한다. viewWillAppear에 등록한다면 Observer 호출 횟수가 계속해서 증가한다. 중복 노티 방지를 체크해야 함! ✅ removeObserver ✅ Notification Extension 💡datePicker ✅ dataPickerView 코드 베이스 구성하기 💡Protocol Delegate 값 전달 protocol 구현 2. delegate 3. 전달할 값 매개변수로 넣기 4. 전달 받은 값 5. 화면 전환 시 값 전달 ✅ DateFormat Extension 💡 Access Control ✔️ open > public > internal > fileprivate > private 코드에 대한 접근을 ..
23.08.28 월
·
iOS/🌱 SeSAC
💡 레이아웃 코드 분리하기 BaseViewController BaseViewController를 생성하여 VC에 공통적으로 사용하는 설정 요소들을 작성하고 뷰 컨트롤러들이 상속 받는 형식으로 구성 뷰 객체에 대한 UI나 레이아웃, 토스트 메세지, 얼럿, 임포트 등 뷰컨에서 공통적으로 작성되는 코드를 구조화 함으로써 가독성도 높이고 코드 중복도 줄일 수 있다. ✅ view controller의 레이아웃 코드 분리하기 BaseView를 상속받는 AddView → AddViewController의 루트 뷰로 설정할 것 자기 자신에게 적용하는 것이기 때문에 view는 지워도 된다. AddView 클래스 인스턴스를 생성 mainView를 루트 뷰로 교체를 해줘야 한다. 💡 RootView - loadView() ..