목록분류 전체보기 (31)
Weekoding
클로저를 사용할 때, [weak self]를 사용하게 된다. 그리고 때때로, 클로저 안에 guard let self = self로 self 캡처를 하는 경우를 보았을 것이다. {[weak self] in guard let self = self else {return} ... } 오늘은 이것들에 대해서 파헤쳐 보고자 한다. 🔍 시작하기 전에: capture: 클로저 내부에서 밖에 있는 scope의 instance를 참조하는 것 escaping: 클로저 외부에서 해당 클로저 자체를 참조하고 있는 것 1. [weak self] : 약한 참조(weak reference)를 의미한다. 써도 그만 안써도 그만일 것 같은 느낌이 드는데, 자세히 알아보자! 1) [weak self]를 쓰는 이유는? Swift는 ARC..
기기에 맞추어 constraint를 변경한다거나, 데이터를 불러와서 setting할 때, 화면 혹은 앱이 끝나서 데이터를 처리하거나 background에서 처리할 것이 있을 때(금융 앱들은 정보보호 차원으로 화면이 가려지는 등) 생명주기를 잘 알고 대응해야 적절한 타이밍에 작업을 할 수 있다. App과 ViewController의 LifeCycle에 대해 정리해 보자. 🔄 App LifeCycle 우선, App LifeCycle과 관련된 동작들은 SceneDelegate와 AppDelegate에서 이루어진다. Xcode Project를 생성하면 기본적으로 생성이 되어있는 파일들이다. Before start : iOS 12 이하 - AppDelegate가 모든 역할을 담당했다. iOS 13 이상 - Sce..
ViewController간 데이터를 주고받는 방법은 6가지가 있다. 1. 직접 프로퍼티에 접근 2. 함수를 통한 접근 3. Segue 4. Delegate 5. Closure 6. NotificationCenter 그 중 1, 4번을 간단한 예제를 통해 정리해보려고 한다. ( 나머지는 추후에..! ㅎㅎ ) 먼저 잠깐 알아보자면 1~3번의 방법들은 남발하게 되면 좋지 않은데, 이 방법들은 다른 ViewController에 직접적으로 의존하게 되므로 강한 결합이 되어있는 형태가 된다. 이는 객체 간 모듈화에도 좋지 않으며 스파게티 코드가 될 위험이 있다고 한다. 4~6번의 방법은 이러한 강한 결합 형태의 문제점을 벗어나 서로 의존하지 않는 구조로 전달할 수 있다. 이번 예제에서는 FirstViewContr..
공부하던 중 lazy 키워드를 발견했다. Bruno Mars의 'The Lazy Song'이 먼저 생각나는 걸 보니 아직 많이 부족한가보다^^ 농담은 그만하고 바로 알아보도록 하자! 📂 ' lazy ' : 게으른, 여유로운 : "A lazy stored property is a property whose initial value is not calculated until the first time it is used" → 처음 호출되기 전 까지는 초기화 값이 계산되지 않는 프로퍼티. -Swift Programming Guide 호출 시에 생성이 되면서 메모리에 올라가고, 이후 같은 변수 사용 시엔 이전에 생성된 프로퍼티를 이용한다. 이름 값 하는 키워드이다! lazy 키워드를 갖는 프로퍼티가 어떤 상황에..
Storyboard 없으면 세상이 무너지는 줄만 알았던 나... Snapkit과 code 형식으로 AutoLayout을 짜는 것에 재미를 붙이고 있는 중이다. 코드로 작성된 UIKit 기반 레이아웃의 한 가지 불편한 점은 Simulator 혹은 Device에 build하기 전까지는 결과물을 알 수 없다는 것이다. UIKit 이후에 나온 SwiftUI는 PreviewProvider를 통해 코드 변경 시, 실시간으로 변경되는 UI를 확인할 수 있다. 컴파일 과정이 필요 없어 상당히 효율적이며, 편리하다. ( 사소한 변경마다 cmd+R 을 귀찮게 누르지 않아도 된다 ! ) 그러던 중 기가막힌 방법을 알게 되었다. 바로 UIKit 환경에서도 PreviewProvider의 사용이 가능 하다는 것. 지금부터 알아..