프로토콜이란 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진 ‘프로토콜을 준수한다’라는 것은 프로토콜의 요구사항을 모두 충족시키는 것 프로토콜은 정의를 하고 제시할 뿐 기능 구현을 하지 않음 프로토콜 채택 protocol 키워드 사용 클래스가 다른 클래스를 상속받는다면, 클래스 이름 다음에 프로토콜 나열 protocol (프로토콜이름) { (프로토콜 정의) } // 타입의 프로토콜 채택 Struct SomeStruct: AProtocol, BProtocol { (구조체 정의) } Class SomeClass: SuperClass, AProtocol, BProtocoal { (클래스 정의) } 프로토콜 요구사항 프로토콜은 자신을 채택하면 프로퍼티나 메서드와 같은 기능들을 요구함 프로퍼..
인스턴스 메소드와 타입메소드, static 메소드와 class 메소드 인스턴스 메소드 - 특정 타입의 ‘인스턴스’에서 호출 타입 메소드 - ‘특정 타입 자체’에서 호출 func 앞에 static 또는 class 키워드를 추가해서 선언 static 메소드와 class 메소드의 차이 static 서브클래스에서 오버라이드 할 수 없음 class 서브클래스에서 오버라이드 할 수 있음 메소드의 호출 똑같이 점(.)문법으로 호출 할 수 있음 다만, 인스턴스에서 호출하는 것이 아니라 타입에서 호출함 class SomeClass { class func someTypeMethod() { // 타입 메소드 구현 } } SomeClass.someTypeMethod() // 메소드 호출 타입 메소드 안의 ‘self’ 타입 메..
프로토콜의 연관 타입 연관 타입은 프로토콜에서 사용할 수 있는 플레이스 홀더 이름 연관 타입은 타입 매개변수의 그 역할을 프로토콜에서 수행할 수 있도록 만들어진 기능 제네릭의 타입 매개변수와 유사하게 프로토콜 정의 내부에서 사용할 타입이 ‘그 어떤 것이어도 상관 없지만, 하나의 타입이다’라는 의미 protocol Container { associatedtype ItemType // 연관 타입 정의 var count: Int { get } // 아이템 개수 확인 mutating func append(_ item: ItemType) // 아이템 추가 subscript(i: Int) -> ItemType { get } // 인덱스 값으로 아이템을 가져오기 } class MyContainer: Container..
제네릭 여러 타입에 유연하게 대응할 수 있음 재사용하기 쉽고 코드의 중복을 줄일 수 있음 깔끔하소 추상적인 표현 가능해짐 많은 표준 라이브러리가 수많은 제네릭 코드로 구성되어 있음 제네릭을 사용할 때는 제네릭이 필요한 타입 또는 메서드의 이름뒤의 사이에 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시함 (제네릭을 사용하고자 하는 타입 이름) (제네릭을 사용하고자 하는 함수 이름) (함수의 매개변수 … ) Array 타입 Array는 타입 매개변수 Elemnet가 있고, map 메서드는 매개변수 T가 있음 Array는 제네릭을 사용하는 제네릭 타입, map 메서드는 제네릭을 사용하는 제네릭 함수 public stuct Array : // 생략 // 중략 public func map // 중략 전위연산자..
컴파일러 제어 구문 컴파일러 제어 구문을 사용하면 컴파일에 영향을 줄 수 있음 조건부 컴파일 블록 #if, #elseif, #endif 등의 키워드가 있음 컴파일에 조건에 맞는 코드는 컴파일 단계에서 포함시키고, 그렇지 않은 코드는 컴파일 하지 않음 #if 로 시작하여 #endif 로 끝남, 다른 조건은 #elseif를 사용 #if (컴파일 조건 1) // 컴파일 조건 1이 참이면 컴파일될 코드 #elseif (컴파일 조건2) // 컴파일 조건 1이 거짓이고, 컴파일 조건 2가 참이면 컴파일될 코드 #else // 컴파일 조건1과 컴파일 조건2가 모두 거짓인 경우 컴파일 될 코드 #endif 각종 환경 확인 함수와 유효한 전달인자 값 조건부 컴파일 블록의 사용 #if os(Linux) print("이 프..
열거형 추가/수정이 불가능 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 값을 가질 수도 가지지 않을 수도 있음 각 항목이 그 자체로 고유의 값이 될 수 있음 원시값(raw value) 형태로 실제 값을 가질 수 도 있음 연관 값(associated values)을 사용하여 공용체라고 불리는 값의 묶음도 구현 가능 기본 열거형 열거형의 선언, 할당, 변경 enum School { case primary case elementary case middle case high case college case university case graduate } enum car { case bus, taxi, car, truck } // 값 할당하고 변경하기..
앱 소개 - 아! 그때 샀으면... 라고 말할 때 샀으면... - 주식을 대상으로 과거 시점과 현 시점을 비교하는 과거 주가 확인 어플리케이션 - 국내외 시장지표(환율, 코스피, 코스닥, 다우존스, snp500, 나스닥 정보 제공) - 증시 뉴스 제공 최초 기획 메인 기능 - 주가지수, 종목, 가격 검색 - Push Notification - e-나라지표 API 사용 (소비자 물가지수 정보 반영) - Naver API (경제 정보 전달) - 주식 외 ETF, 비트코인 정보 추가 서브기능 - 결과 공유 기능 - 종목 가격 세부 탐색(MDD, MDU, CAGR) - 종목 가격에 따른 다른 설명 전달(MDD 시점에 따른 경제 위기 안내 등) - Webkit 사용한 경제 단어 검색 정보 전달(MDD, 소비자 물..
https://modelinspring.tistory.com/61 [Swift/iOS] 타입캐스팅(1) - 타입 변환, 타입캐스팅, 데이터 타입 확인, 메타 타입, 메타 타입 타입 스위프트는 데이터 타입 안전을 위해서 서로 다른 타입끼리의 값 교환을 제한함 1. 기존 언어의 타입 변환과 스위프트 타입 변환 실패할 수 있는 이니셜라이져 // 실패 할 수 있는 이니셜라이져 v modelinspring.tistory.com 에 이어서 작성되었습니다 스위프트는 데이터 타입 안전을 위해서 서로 다른 타입끼리의 값 교환을 제한함 1. 기존 언어의 타입 변환과 스위프트 타입 변환 실패할 수 있는 이니셜라이져 // 실패 할 수 있는 이니셜라이져 var string:Value String = "000111222" var..
1. 오류처리란 오류처리는 프로그램이 오류를 일으켰을 때, 감지하고 회복하는 일련의 과정 2. 오류의 표현 스위프트에서 오류는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현 Error는 요구사항 없는 빈 프로토콜 오류를 표현하기 위한 타입은 이 프로토콜을 채택함(주로 열거형) //스마트폰에서 발생할 수 있는 에러 enum phoneError: Error { case notConnectedToInternet case notSupportedOnDevice case outOfMemory } 위 코드에서 Error 프로토콜을 채택한 것을 통해 오류처리를 위한 열거형임을 알 수 있음 오류의 종류를 예상하고, 오류 때문에 다음에 행할 동작이 정상적으로 진행되지 않으면 오류를 던져줌 오류를 던져줄 때는 t..
스위프트는 데이터 타입 안전을 위해서 서로 다른 타입끼리의 값 교환을 제한함 1. 기존 언어의 타입 변환과 스위프트 타입 변환 실패할 수 있는 이니셜라이져 // 실패 할 수 있는 이니셜라이져 var string:Value String = "000111222" var integerValue: Int? = Int(stringValue) print(integerValue) // Optional(111222) stringValue = "AAA000111" integerValue = Int(stringValue) print(integerValue) // nil 2. 스위프트 타입캐스팅 스위프트의 타입캐스팅은 인스턴스의 타입을 확인하거나 자신을 다른 타입의 인스턴스인양 행세할 수 있는 방법 is와 as로 타입을 확..
- Total
- Today
- Yesterday
- ios
- inout 파라미터 메모리 충돌
- Delegate 패턴
- 클로저 축약
- object
- 디자인패턴
- 자동클로저
- 토큰저장
- weak
- 캡쳐리스트
- 회원가입
- CoreData
- ASAuthorizationAppleIDCredential
- 메모리 안정성
- core data
- 강한 참조 순환
- 강한참조순환
- escaping closrue
- unowned
- authorizationCode
- 클로저
- autoclosure
- SWIFT
- 클로저 강한 참조
- context
- Core Data Stack
- 클로저표현
- Persistent Container
- identity Token
- Entity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |