목록2025/01 (22)
大器晩成
지난 포스팅 때에는 컬렉션뷰를 코드베이스로 만드는 것과 레이아웃 설정에 대해서 간단하게 말씀드렸습니다.이번 포스팅에서는 디바이스별 셀의 똑같은 형태로 보이게 하기 위해서는 어떻게 할 수 있을지에 대해서 알아보도록 하겠습니다. 1. Scroll - Horizontal 방식일 때, private func collecionViewFlowLayout() -> UICollectionViewFlowLayout { let layout = UICollectionViewFlowLayout() let deviceWidth = UIScreen.main.bounds.size.width let spacing: CGFloat = 4 let inset..
[생성자 요구사항] 클래스는 상속을 고려해야 하며, 생성자 앞에 required를 붙여야 합니다.구조체는 상속이 없기 때문에, required키워드가 따로 필요 없습니다.클래스의 final을 붙여서 상속이 없다는 것을 명시하면, required를 생략할 수 있습니다.클래스에서는 지정생성자 또는 편의생성자로 구현이 가능합니다.실제 프로젝트에서 사용하는 경우는 드뭅니다. Apple 공식문서protocol SomeProtocol { init(someParameter: Int)}class SomeClass: SomeProtocol { required init(someParameter: Int) { // initializer implementation goes here }}class..
QoS(Quality Of Service)의 약자로 DispatchQueue.global().async일 때 사용됩니다.Concurrent 방식의 비동기로 작업할 때에는 우선순위를 알 수 없기 때문에, 우선순위를 관리하기 위해서 QOS를 사용합니다.왜 다른 곳에서 사용할 수 없냐고 의문을 가지신다면 간다합니다.- 시리얼 동기 방식은 직렬 방식이기 때문에 순서를 알 수 있습니다.- 시리얼 비동기 방식은 메인 스레드가 먼저 작업이 수행되고 나서 다른 스레드가 실행되기 때문에 순서를 알 수 있습니다- 동시 동기 방식은 다른 큐에 동작들이 먼저 실행되고, 메인 스레드가 실행되기 때문에, 순서를 알 수 있습니다.- 하지만 동시 비동기 방식은 순서를 알 수 없습니다. QoS는 6가지로 구분됩니다.userIntera..
이전 포스팅에서는 Serial 상태에서 Sync와 Async를 알아봤습니다.이번 포스팅에서는 Concurrent Sync/Async를 정리해 보도록 하겠습니다. Concurrent Syncfunc ConcurrentSync() { print("START") print("첫번째 작업 시작") DispatchQueue.global().sync { for i in 1...10 { print(i, terminator: " ") } } DispatchQueue.global().sync { for i in 21...30 { print(i, terminator: " ") } } ..