-
Swift 꼭 알아야 하는 내용Swift 2019. 10. 30. 11:47
1. Property Observer
값이 변경될때 동작을 수행하게 할 수 있다.
Wiliset(값이 저장되기 직전에), didset(값이 저장된 직후에)
값이 동일하더라도 속성의 값이 설정 될때마다 호출
2. 클로저
3. Typealias
4. DispatchQueue
서비스를 날리거나, 통신을 했다면 다 받아오고 나서 할당을 시작하면 되겠죠? 이때 시간이 오래 걸리는 작업을 수행하면서 사용자의 UI는 막지 않고자 할때 사용합니다.
멀티 쓰레드 (학부때 배운 내용과 매우 유사) 작업을 할때 상황에 맞는 큐를 골라야 합니다.
- Main : serial queue모든 UI는 Main에서 async : 기다리지 말고 바로 해라.
- Global : concurrent queue 작업의 우선순위를 정해서 이때, user-interactive, user initiated, utility, background 이렇게 있음.
위의 코드를 이해하면 쉽다. 이미지 불러오기 작업을 시작하고, 모두 가져왔으면 이미지를 유저에게 보여준다.
5. 뒷단의 작업이 완료되는 순간은 언제인가
( Callback, notification, delegation)
홈버튼이 눌려서 앱이 백그라운드로 이동했는지 이런건 애플에서 만든 notification이 있다
property변경이 되었을때 알려주는게 Kbo(add observer)
delegation이 한 객체가 다른 객체에 말을 걸기 위한 방법이다. (위임) - delegation protocol
6. 생명주기
앱의 UI event는 일반적으로 UIApplication -> UIWindow -> UIViewController -> UIView -> subviews (UIButton 등)
ViewDidLoad - 해당 뷰컨트롤러 클래스가 생성될 때(ViewWillAppear전에 실행) 실행됩니다. Low memory와같은 특별한 경우가 아니라면 딱 한번만 실행되기 때문에 초기화 할 때 사용 할 수 있습니다.
ViewWillAppear - 뷰 컨트롤러가 화면에 나타나기 직전에 실행됩니다. 뷰 컨트롤러가 나타나기 직전에 항상 실행되기 때문에 해당 뷰 컨트롤러가 나타나기 직전마다 일어나는 작업들을 여기에 배치 시킬 수 있습니다.
ViewDidAppear - 뷰 컨트롤러가 화면에 나타난 직후에 실행됩니다. 화면에 적용될 애니메이션을 그리거나 API로 부터 정보를 받아와 화면을 업데이트 할 때 이곳에 로직을 위치시키면 좋습니다. 왜냐하면 지나치게 빨리 애니메이션을 그리거나 API에서 정보를 받아와 뷰 컨트롤러를 업데이트 할 경우 화면에 반영되지 않습니다.
ViewWill/DidDisappear - 뷰 컨트롤러가 화면에 나타난 직전/직후에 실행됩니다.
View가 처음 로드됨 -> 모든 View들이 준비됨(viewDidLoad. 즉 View객체들이 메모리에 올라감.) -> 컨텐츠를 그려줄때 처음 draw메소드가 불림 -> View업데이트가 발생함 -> (View업데이트가 필요하면 setNeedsDisplay () 또는 setNeedsDisplay (_ :) 메소드를 호출) -> 다음 드로잉 사이클때 View가 업데이트 됨
강제로 레이아웃을 업데이트 하려면 다음 드로잉 업데이트 전에 setNeedsLayout()메소드를 호출. 무조건 View의 레이아웃을 즉시 업데이트하려면, layoutIfNeeded()메소드를 호출.
728x90'Swift' 카테고리의 다른 글
Xcode 빠른 빌드가 필요할때 - diagnostic-options 와 그외 (0) 2021.04.20 SwiftLint 적용하기 (0) 2021.04.19 ios 14 위젯 만들기 (0) 2021.03.17 Xcode Build Settings 타겟분리 (0) 2021.03.08 Swift 기본문법 (0) 2019.11.03