IOS

    iOS - 애니메이션효과

    UIView.animate(withDuration: 0.3) { //지속시간 self.stackView.layoutIfNeeded() } stackView내부의 객체가 변화한다면 (오토레이아웃)동적으로 변화하게끔 만들어 애니메이션 효과를 줄 수 있다.

    iOS - Code UI(Auto Layout)

    오토레이아웃 width : 정렬 사각형의 너비 height: 정렬 사각형의 높이 top: 정렬 하각형의 상단 bottn: 정렬 사각형의 하단 Horizontal: 수평 Vertical: 수직 Leading: 리딩, 왼쪽 Trailing: 트레일링, 오른쪽 CenterX: 수평중심 CenterY: 수직중심 Anchor 오토레이아웃을 활용해 어떤 중심을 기준으로 얼마나 띄울건지에 대한 것을 Anchor라고 한다. top = topAnchor / leading = leadingAnchor 높이 = heightAnchor / 넓이 = widthAnchor // leading 얼마를 띄울건지 //상속받은 view의 leading을 기준으로 //30만큼 //활성화 //true emailTextFieldView.le..

    iOS - Network 연결 확인하기(Swift)

    Network 프레임워크를 사용해서 현재 기기의 인터넷 연결 상태와 연결 타입을 알 수 있다. 네트워크 연결을 지속적으로 감지하여 연결이 끊기면 실시간으로 알려준다. 1. NetworkMonitor 클래스 생성 Network 프레임워크를 import하고 네트워크 연결을 감지하는 싱글톤 패턴의 클래스를 별도로 만든다. NWPathMonitor로 현재 네트워크 연결 상태를 확인할 수 있다 // file: NetworkCheck.swift import Foundation import Network final class NetworkCheck{ static let shared = NetworkCheck() private let queue = DispatchQueue.global() private let moni..

    iOS. 동시성 프로그래밍 DeadLock, Race condition 해결방법

    💥동시성 프로그래밍의 문제점 데드락(Dead Lock)과 경쟁조건(Race Condition)에 관한 이야기이다. 한 개의 자원에 여러개의 쓰레드가 접근하려고 한다 ==> RaceCondition Racecondition이 발생해 여러가지 쓰레드에서 공유자원에 동시접근을 막기위해 걸어잠굴 수 있다. 각 쓰레드는 공유자원에 여러개의 동시접근을 막기위해 사용중인 동안 다른 쓰레드의 공유자원 접근을 막을 수 있다. 데드락은 아래에서 다루고 있다. https://clamp-coding.tistory.com/72 운영체제(OS) - 식사하는 철학자 문제(Dining Philosophers Problem) 식사하는 철학자 문제 철학자 다섯이서 원형 식탁에 둘러앉아 생각에 빠지다가, 배고플 땐 밥을 먹는다. 그들의 ..

    iOS. 디스패치큐(GCD) 사용시 주의해야할 사항

    ⭐️앨런님 강의를 듣고 정리한 글입니다⭐️ 💥디스패치큐(GCD) 사용시 주의해야할 사항 ❓반드시 메인큐에서 처리해야하는 작업 UI관련 처리는 반드시 메인큐에서 처리해야한다 DispatchQueue.global().async{ //코드 1 //코드 2 DispatchQueue.main.async{ //다운로드 한 이미지 표시 코드 self.imageView.image = image // UI 관련 작업들은 메인큐에서 진행 } } //URLSession은 내부적으로 비동기 처리가 되어있음 URLSession.shared.dataTask(with: url){ //코드 1 //코드 2 DispatchQueue.main.async{ //다운로드 한 이미지 표시 코드 self.imageView.image = ima..

    iOS. GCD의 개념과 Dispatch큐(Queue)종류? Qos

    ❓메인 큐 - DispatchQueue.main 메인큐 = 메인쓰레드 직렬로 작동한다. 기본적으로 실행하는 코드는 직렬 + 동기적으로 실행된다. 일반적으로 사용하는 print("123456") 이란 코드는 아래와 같은 의미가 숨겨져 있다. DispatchQueue.main.sync{ print("123456" } ❓글로벌 큐 - DispatchQueue.global() DispatchQueue.global().async{ } 글로벌큐 중 디폴트 기본적으로 동시(Concurrent)큐 여러개의 쓰레드를 사용한다. QoS에 따라서 여러개로 나뉜다. ex) DispatchQueue.global(qos: .utility) ❓QoS (Quality of Service) 서비스의 품질에 따라서 나뉜다. 서비스의 품..

    iOS. 동시성프로그래밍(2) - 동기, 비동기, 직렬, 동기

    💥 비동기(Async) vs 동기(Sync) ❓비동기(Async) 작업을 다른 스레드로 보낸 후 작업이 끝나기를 기다리지 않는다. 기다리지 않기 때문에 다음 작업을 진행할 수 있다. ❓동기(Sync) 다른 스레드에 작업을 시키고, 끝날 때까지 기다린다. 작업이 끝날 때까지 다른 작업을 시작할 수 없다. 💥 직렬(Serial)큐 vs 동시(Concurrent)큐 큐의 특성에 따라 나뉘어짐 ❓직렬(Serial)큐 Queue에서 받은 테스크들을 단 하나의 다른 쓰레드로 보내는 큐 한 번에 하나의 테스크를 순차적으로 실행 순서가 중요한 작업을 처리할 때 Main Thread에서 사용되는 Queue(Main Queue) ❓동시(Concurrency)큐 Queue에서 받은 테스크들을 다른 여러개의 쓰레드로 보내는 ..

    iOS. 동시성(Concurrency) 프로그래밍(1) - 동시성프로그래밍이란? feat. 병렬/동시

    동시성 프로그래밍이 필요한 이유 네트워크 통신과 비동기 처리 네트워크 통신, 서버에 데이터를 요청하는 일은 부하가 많이 걸리는 일이다. 당근마켓의 화면엔 사진과, 정보를 담고 있으며, 이를 스크롤하며 다른 정보들을 갖고있을 수 있다. 비동기 처리를 하지 않으면 한 번에 한 개의 작업만 할 수 있다. 첫번째 사진을 다운로드 -> 첫 번째 정보를 다운로드 -> 두 번째 사진을 다운로드... 그러므로 비동기 처리를 하지않으면 테이블 뷰를 스크롤 할 때 마다 버벅거릴것이다. 아이폰의 메인쓰레드 아이폰의 화면 주사율은 60Hz이다. 1초에 60번 화면을 다시 그린다는 뜻이다. 계산을 해보면 0.01666초에 한 번 화면을 다시 그려야 하며 화면을 다시 그리는 일은 메인쓰레드가한다. 즉 메인쓰레드는 0.01666초..

    iOS . 오토레이아웃 - Aspect Ratio

    Aspect Ratio 화면의 객체의 크기를 비율로 지정할 때 사용 이미지나 제목 등을 다양한 화면에서 고정된 비율의 크기로 보여주기 위해 사용!

    iOS - The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions(Rx 타입추론에러)

    The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions Rx를 공부하다가 발생한 에러. combineLatest와 map을 사용하다가 발생했다. 타입을 추론하기 어려워 빌드할 수 없다는 내용 Observable.combineLatest([redSlider.rx.value, greenSlider.rx.value, blueSlider.rx.value]) .map{ UIColor(red: CGFloat($0[0]) / 255, green: CGFloat($0[0]) / 255, blue: CGFloat($0[0]) / 255, ..