본문 바로가기

분류 전체보기

(53)
Optional enum Optional: ExpressibleByNilLiteral { case none case some(Wrapped) } 해당 값이 비어있을 수 있음을 명시할 수 있음 옵셔널 타입의 경우 nil을 할당할 수 있음 옵셔널 타입의 기본값을 제공하지 않으면 자동으로 nil이 기본값 옵셔널 타입은 non-옵셔널 타입과 혼재하여 사용할 수 없음 옵셔널 타입은 2가지의 case를 갖는 열거형 // 아래와 같이 사용 가능 let number: Int? = Optional.some(42) let noNumber: Int? = Optional.none print(noNumber == nil) // Prints "true" → none : nil과 동일 / some(Wrapped) : wrapping된 값을 저장 ..
TCP/IP, UDP TCP/IP(Transmission Control Protocol/Internet Protocol) IP의 핵심 프로토콜 중 하나 일반적으로 메일, 컴퓨터 간 파일 전송, 원격 로그인에 사용됨 네트워크에 연결된 여러 호스트(컴퓨터) 사이의 통신을 지원 사용자가 필요하는 많은 통신 서비스에 대한 표준을 제공 장점 하드웨어에 구애받지 않는다 많은 유형의 네트워크 기술을 허용 네트워크 하드웨어의 세부사항을 숨길 수 있다 UDP와 TCP 비교 UDP : 연결을 설정하지 않으며 수신자가 데이터를 받을 준비가 되었는지 확인하지 않고, 단방향으로 정보 전송 신뢰성이 낮은 프로토콜 실시간 응용 및 멀티캐스팅 TCP : 데이터를 주고 받을 양단을 먼저 연결하고, 이를 통해 양방향으로 데이터 전송→ TCP는 메세지 순서를..
typealias typealias TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Chinese Traditional Indonesian Slovak Czech Italian Slovenian Danish Japanese Spanish Dutch Klingon Swedish English Korean Thai Estonian Latvian Turkish Finnish Lithuanian Ukrainian French Malay Urdu German Maltese Vietnamese Greek Norwegian Welsh Hai..
AppDelegate UIApplicationDelegate 앱의 공유 동작을 관리하는 메소드들 UIKit과 동일하게 앱과 생명주기를 함께함 역할 앱 중앙 데이터 초기화 configure UI 앱 외부 알림에 응답 - 메모리 부족, 다운로드 완료 알림 등 앱 자체를 타겟으로 한 이벤트, 특정 scenes, views, view controller를 타겟하지 않은 이벤트들에 응답 필수 서비스들을 등록 - launch time, Apple Push Notification
Unit Test Unit Test Detect logic failures, UI problems, and performance regressions with XCTest. → XCTest를 사용하여 논리 오류, UI 문제 및 성능 회귀를 감지 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 목표 : 프로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것 Unit Test 장점 다양한 수준의 추상화에서 테스트를 작성하는 기능을 용이하게 한다. → 테스트를 한다는 것은 안정성을 보장하는 것, 디버깅 시간을 줄일 수 있다 →효율적이다, 유지 보수에 유리해지고, 스펙을 문서화할 수도 있고, 더 깔끔한 코드를 작성할 수 있다 테스트 케이스는 서로 분리되어야 하기 때문에 가짜 ..
재사용이란? 아키텍처 공부를 하다보니 문득 재사용에대한 궁금증이 들었다 재사용은 무엇이며, 왜 중요한 것이며, 어떻게 고려해야하는 것인가? 코드 재사용 소프트웨어 재사용 기존의 소프트웨어 또는 소프트웨어 지식을 활용해 새로운 소프트웨어를 구축 단순 코드의 재사용 : 템플릿, 함수와 같은 코드의 일부를 재사용 재사용가능한 자산을 재활용 : 자산에는 설계, 요구명세, test, 아키텍쳐 등이 포함됨 → 그렇다면 과연 지나친 추상화로 가독성이 떨어지게 되는 경우 과연 재사용을 위한 추상화가 의미가 있는 것인가?라는 의문이 듦 재사용을 함으로 작업 시간, 에너지, 비용 절약 재활용을 쉽게하는 특성 : 모듈성, 저결합도, 고응집도, 캡슐화, 관심의 분리 → 최소의 역할로 작게 분리하는 느낌 라이브러리 : 프로그램 일부를 재사..
Swift Concurrency II 비동기 함수를 병렬로 호출 await를 사용하여 비동기 함수를 호출하면 한 번에 하나의 코드만 실행 let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNames[1]) let thirdPhoto = await downloadPhoto(named: photoNames[2]) let photos = [firstPhoto, secondPhoto, thirdPhoto] show(photos) → 이런 경우 downloadPhoto가 비동기 작업이어도 프로퍼티에 값을 넣는 동기 작업이 따르기 때문에 동기적으로 작업이 처리됨 async let firstPhoto = dow..
Swift Concurrency I Coroutine 서브 루틴을 일시 정지하고 재개할 수 있는 프로그래밍 참고하기 좋은 블로그 - Swift Async-Awiat과 Kotlin Coroutine 비교 Swift Concurrency 병렬 프로그래밍과 비동기 코드를 사용하는 프로그램은 한번에 여러 작업을 수행할 수 있음 Swift안에서 Concurrency 모델은 스레드에서 구축하지만 스레드와 직접 상호 작용하지는 않음 → 비동기 함수가 Blocking이 되면 시스템에 맡김 → 비동기 함수가 다시 resume되면 해당 함수가 어느 스레드에서 실행될지는 보장되지 않음 → 비동기 함수가 Blocking 시 실행 중이던 스레드를 포기할 수 있게 되고, 해당 스레드는 다른 비동기 함수를 실행할 수 있음 이 개념은 코루틴(Coroutine) 에서 ..

728x90