프로토콜의 연관 타입 연관 타입은 프로토콜에서 사용할 수 있는 플레이스 홀더 이름 연관 타입은 타입 매개변수의 그 역할을 프로토콜에서 수행할 수 있도록 만들어진 기능 제네릭의 타입 매개변수와 유사하게 프로토콜 정의 내부에서 사용할 타입이 ‘그 어떤 것이어도 상관 없지만, 하나의 타입이다’라는 의미 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..
https://velog.io/@j00hyun/3.8-Tab-Bar-Controllers var stackedLayoutAppearance: UITabBarItemAppearance The appearance attributes for items with a stacked layout. The 3 UITabBarItemAppearances Right around the 8 minute mark in the WWDC video, apple mentions there are 3 different appearances for UITabBarAppearance: stackedLayoutAppearance – This appears to be the standard appearance inlineLayoutApp..
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로 타입을 확..

알람어플은 라이트모드, 다크모드 상관없이 검은색 테마를 유지하고 있기에 다크모드 지원이 되지 않게 설정을 해주었다 다크모드 지원 설정은 아래 포스팅에서 간단하게 설명되어있다 https://modelinspring.tistory.com/51 [swift/iOS] 회원가입 페이지 만들기(1) - 요소와 기능 확인, 프로젝트 만들기, 다크모드 지원 설정, 회원가입 페이지를 만들어볼 예정이다 페이지에 들어갈 요소와 기능부터 생각을 해보자 회원가입 페이지에 들어갈 요소 1. 아이디 2. 비밀번호 3. 이메일 4. 친구 초대 추천인 아이디 5. 휴대폰 번 modelinspring.tistory.com Tab Bar 설정을 마무리 지어주자 Tab Bar의 Background 색상은 위의 사진 처럼 뒤에 내용이 있으면..
- Total
- Today
- Yesterday
- context
- 강한 참조 순환
- 메모리 안정성
- ios
- Core Data Stack
- inout 파라미터 메모리 충돌
- 클로저 축약
- object
- 클로저표현
- 회원가입
- 강한참조순환
- 캡쳐리스트
- Entity
- identity Token
- autoclosure
- 토큰저장
- 자동클로저
- 클로저
- core data
- 클로저 강한 참조
- authorizationCode
- Delegate 패턴
- 디자인패턴
- unowned
- weak
- ASAuthorizationAppleIDCredential
- SWIFT
- CoreData
- escaping closrue
- Persistent Container
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |