본문 바로가기

전체 글245

Foundation Kit 정의 - 필수 데이터 타입(String, Int, Double,,), 컬렉션 타입(Array, Dictionary, Set), 운영체제 서비스를 이용하여 앱의 기본적인 기능을 관리합니다. - 데이터 타입, 날짜 및 시간, 필터 및 정렬, 네트워크, 등,, 의 기본 기능을 제공합니다. - Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터타입은 iOS, MacOS, tvOS, 등,, 모든 애플의 SDK에서 사용됩니다. 기능별 요소 - 기본 Numbers, Data, and Basic Values : Cocoa 전체에서 사용되는 기본 값 및 기본 타입 유형으로 작업 Strings and Text : 유니코드 문자의 문자열을 생성 및 처리, 정규식을 사용하여 패턴을 찾고, 자연어 분석 수행 .. 2022. 3. 25.
GCD [ Grand Central Dispatch ] 정의 - Background에서 스레드를 관리하면서 동시적으로 작업을 실행시켜주는 저수준 API를 제공하는 라이브러리 - 애플에서 제공하는 API로, 멀티스레딩 처리를 쉽고 편하게 해 줍니다. - 앱을 실행하면 시스템이 자동으로 메인 스레드 위에서 동작하는 Main Queue를 만들어서 작업을 수행 관련 용어 스레드(Thread) - 코드에 대한 별도의 실행 경로 프로세스(Process) - 실행 중인 실행 파일 - 하나의 프로세스는 다중 스레드를 가질 수 있습니다. GCD 동작 방식 - 수행해야 할 일(코드)을 Operation으로 Wrapping 한 다음에, Queue에 넣습니다. - 이후에 Queue에서 남는 스레드에 작업을 배분하는 형식으로 동작합니다. - 작업을 main thread, globa.. 2022. 3. 24.
Convenience init 정의 - 클래스의 이니셜 라이져인 Designated init를 보조해주는 보조 이니셜라이저입니다. - Designated init의 파라미터 중 일부를 디폴트 값으로 설정해 Convenience init 안에 Designated init를 호출하여 초기화를 진행할 수 있습니다. - Convenience init를 사용하기 위해서 반드시 Designated init를 선언해야 합니다. 작성법 - 다음은 아직 Convenience init를 사용하지 않은 class입니다. - Convenience init를 사용하지 않은 상태에서는 init 파라미터에 클래스 프로퍼티를 빼먹으면 에러가 발생합니다. class information { var name: String var age: Int var address.. 2022. 3. 23.
Singleton Pattern 정의 - 특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 패턴 - 특정 클래스에 인스턴스를 Singleton Pattern으로 사용한다면 최초 생성될 때 한 번만 생성해서 전역으로 두고, 그 이후로는 이 인스턴스만 접근 가능하게 하는 것 - 즉, 하나의 인스턴스에 어떠한 클래스든 접근 가능하게 하는 것 Singleton Class 생성 방법 static 프로퍼티로 인스턴스 생성하기 class UserInfo{ static let shared = UserInfo() var id: String? var password: String? var name: String? } init 함수 접근제어자를 private로 지정하기 - 혹시라도 init 함수를 호출해 인스턴스가 다시 생성.. 2022. 3. 22.
COW Copy-On-Write - 컴퓨터 프로그래밍에서 복사 동작을 할 때, 실제 원본이나 복사본이 수정되기 전까지 복사를 하지 않고 원본 리소스를 공유하며 원본이나 복사본에서 수정이 일어날 경우, 그때 복사하는 작업을 수행하는 기술 - 간단하게 말해, 수정(쓰기)이 발생할 때 복사한다는 의미 작동 원리 - 기존에 알고있던 바로는 A에 대한 값을 B에 복사한다면 다음과 같이 값을 가지게 된다고 이해하고 있습니다. - 하지만 COW를 쓴다면, 다음과 같이 B가 A의 복사한 값을 가지고 있는 것이 아닌 참조하고 있는 상태가 됩니다. - 현재 상태에서 A(원본)나 B(복사본)의 값을 수정한다면, 복사가 이루어져 B객체의 값이 메모리에 할당됩니다. 예제 - 실제로 배열을 만들어서 메모리 주소를 확인해보겠습니다. - .. 2022. 3. 21.
defer defer? - 현재 코드 블록을 빠져나가기 전에 꼭 실행해야 되는 코드를 작성하여 코드가 블록을 빠져나가기 전에 꼭 실행시키게 하는 문법 - 작성된 위치와 상관없이 함수 종료 직전에 실행되는 구문 예제 func test() { print("Test 1") defer { print("Test defer") } print("Test 2") } test() // 실행결과 // Test 1 // Test 2 // Test defer 예제2 : defer의 실행 순서 - defer 구문끼리의 순서는 역순으로 실행됩니다. func test() { print("Test") defer { print("Test defer1") } defer { print("Test defer2") } defer { print("Tes.. 2022. 3. 18.