데이터 타입 기본Int는 +, -를 포함하는 정수형 타입이다. 양의 정수만을 포함하는 UInt와 선택해 사용한다.Float과 Double은 부동소수 타입이다. 간단하게 말하서 소수점 자리가 있는 수를 포함하는 데이터 타입이다. 둘의 차이점은 Double이 Float에
연산자의 종류일반적인 수학에서 쓰이는 연산자와 같다.를 사용하여 런타임 오류에 대비할 수 있다.흐름 제어if 구문은 반드시 Bool타입의 조건을 가져여야만 한다.if 키워드 뒤에 조건 수식을 소괄호로 묶는 것은 선택 사항이다. \`\`\`let first: Int =
흐름제어switch 구문은 특정 값을 받아 미리 지정한 case 조건에 충족한 코드가 실행되는 형태이다. == 및 범위도 표현이 가능하다. 입력값과 데이터 타입이 같이야하며 비교될 값이 한정적인 열거 값이 아닌경우에는 default를 반드시 작성해야한다. 또, case
함수함수는 func 키워드를 사용한다. 함수 이름 지정 후 소괄호() 를 사용하여 매개변수를 감싸준다. 그 후 -> 를 통하여 반환 타입을 지정해주고 return을 사용하여 반환한다. 또, 내부 코드가 한줄 표현이고 결과값의 타입이 반환 타입과 일치한다면 return을
옵셔널 nil의 가능성을 명시적으로 표현함. 옵셔널 타입은 다른 데이터타입과 별개의 취급을 받는다. "" 공백으로 한다고 해서 값이 없는 것은 아니다. 공백이라는 값을 할당한 것이다. 정말 아무 값도 없는 것을 nil이라고 표현한다. 값이 없는 옵셔널 값에 접근하
구조체와 클래스구조체는 struct 키워드로 정의한다. 구조체를 정의한다는 것은 새로운 타입을 생성해주는 것과 마찬가지로 첫 글자를 대문자로 사용한다.메서드는 어떤 타입 안에 들어있는 함수를 뜻한다.프로퍼티는 어떤 타입 안에 들어있는 인스턴스 변수, 상수를 말한다.st
프로퍼티와 메서드프로퍼티는 저장 프로퍼티: 인스턴스의 변수 또는 상수연산 프로퍼티: 값을 저장하는 것이 아닌 특정 연산을 실행한 결과 값 타입 프로퍼티: 앞서 말한 두 프로퍼티는 타입을 정의하고 해당 타입의 인스턴스가 생성됐을때 사용할 수 있으나, 타입 프로퍼티는 인스
인스턴스 생성 및 소멸우리는 항상 인스턴스를 생성할 때, 프로퍼티에 초기값을 설정해야만 했다. 그러나 이니셜라이저 init를 사용하면 초기화 과정을 직접 구현할 수 있다. 이니셜라이저로 저장 프로퍼티에 초깃값을 설정하는 방식도 있지만 프로퍼티를 정의할 때 프로퍼티에 기
접근제어접근제어는 코드끼리 상호작용을 할ㄷ 떄 파일 간 또는 모듈 간에 접근을 제한하는 기능이다. 모듈: 배포할 코드의 묶음 단위. import 키워드를 사용해 불러온다.소스파일: 하나의 스위프트 소스 코드 파일을 의미.접근수준 키워드를 통해 특정 접근 수준을 지정할
클로저클로저는 변수나 상수가 선언된 위치에서 참조를 획득하고 저장할 수 있다. 함수도 클로저의 일종이다. 클로저는형식을 따르고 크게 세가지로 나뉜다.이름이 있고 어떤 값도 획득하지 않은 형태이름이 있고 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태이름이 없
옵셔널 체이닝은 옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정이다. 옵셔널 값을 연결된 것들을 호출하려면 상당히 긴 구문이 필요한데, 옵셔널 체이닝을 사용하면 간단하게 표현이 가능하다.옵셔
맵
함수 객체 중에서 자신의 컨텍스트와 같은 컨텍스트의 형태로 맵핑할 수 있는 함수객체를 닫힌 함수객체라고 한다.모나드는 닫힌 함수객체이다. 컨텍스트는 콘텐츠를 담은 무엇인가를 뜻한다. 모나드는 컨텍스트에 포장된 값을 처리하여 포장된 값을 컨텍스트에 다시 반환하는 함수 (
서브스크립트 서브 스크립트는 subscript 키워드를 사용하여 정의한다. 인스턴스 메서드와 비슷하게 매개변수의 개수, 타입, 반환타입등을 지정하며, 읽고 쓰기가 가능하도록 구현하거나 읽기전용으로만 구현할 수 있다. 클래스, 구조체 열거형에 접근하기 위한 문법이다.
클래스 상속 상속은 기반클래스를 다른 클래스에서 물려받는 것을 말한다. 부모 클래스의 메서드, 프로퍼티 등을 재정의하거나 기반클래스의 기능이나 프로퍼티를 물려받고 자신의 기능을 추가할 수 있다. 클래스 이름 뒤에 콜론을 붙이고 다른 클래스 이름을 써주면 뒤에 오는 클
인스턴스의 타입을 확인하거나 자신을 다른 타입의 인스턴스인양 행세할 수 있는 방법으로 사용할 수 있다.is와 as연산자로 값의 타입을 확인하거나 다른 타입으로 전환할 수 있다.is 연산자를 사용하여 인스턴스가 어떤 클래스의 인스턴스인지 타입을 확인해볼 수 있다. 인스턴
프로토콜이란 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 말한다. 어떤 프로토콜의 요구사항을 모두 따르는 타입을 '해당 프로토콜을 준수한다'고 표현한다. 프로토콜은 정의하고 제시할 뿐 구현을 하지는 않는다.구조체, 클래스, 열거형 등에서 프로
익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있다. 기능을 추가하려는 타입을 구현한 소스 코드를알지 못하거나 볼 수 없다 해도, 타입만 안다면 그 타입의 기능을 확장할 수 있다. 그러나 기존에 존재하는 기능을 재정의할 수는 없다.연산
제네릭제네릭은 같은 타입인 두 변수의 값을 교환한다는 목적을 타입에 상관없이 할 수 있도록 단 하나의 함수로 구현가능하다.제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤에 <> 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할
타입 중첩타입 내부에 타입을 정의하고 구현 가능한데, 이것을 중첩 타입이라고 한다. (위에선 GameType과 GameInfo) 이름이 같더라도 각 구조체에서 역할을 달리하고 싶을 때 사용하게 된다.패턴패턴은 크게 두종류로 나뉜다.값을 해체하거나 무시하는 패턴 \->와
wherewhere 절은 특정 패턴과 결합하여 조건을 추가하는 역할을 한다. 크게 두 가지 용도로 활용된다.패턴과 결합하여 조건 추가타입에 대한 제약 추가프로토콜 익스텐션에 where절을 사용하면 이 익스텐션이 특정 프로토콜을 준수하는 타입에만 적용될 수 있도록 제약을
ARC 자동으로 메모를 관리해주는 방식이다. (Automatic Reference Counting) ARC는 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 컴파일과 동시에 인스턴스를 메모리에서 해제하는 시점이 결정된다. 원하는 방
오류처리 오류처리는 프로그램이 오류를 일으켰을 때 이것을 감지하고 회복시키는 일련의 과정이다. 오류의 표현 오류는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현된다. Error프로토콜은 사실상 요구사항이 없는 빈 프로토콜이지만, 오류를 표현하기 위한 타입
메모리 안전메모리 접근 충돌은 서로 다른 코드에서 동시에 같은 위치의 메모리에 접근할 때 발생한다. 이 충돌을 일으키는 메모리 접근에는 세 가지 특성이 있다. 세 가지 조건에 모두 해당하는 메모리 접근이 두 군데 이상의 코드에서 동시에 일어나면 충돌이 발생한다. 최소한
어플 제작 과정에서 인스턴스화 시켜 데이터를 이동시킬때마다 자꾸 오류가 발생했다. 이유를 찾아보니 IBOutlet에 접근할때 조금 더 조심히 접근해야했다.인스턴스화 및 present를 통한 데이터 이동에서 일반적인 변수나 상수는 클래스가 정의되는 순간 동시에 생성되기
이전 분실물 어플을 만들며 구조가 굉장히 난잡하다고 느껴졌다. 나이외에 사람은 코드를 수정하기도 굉장히 어렵고 나조차도 코드를 찾는것이 한참 걸릴 정도였다. 그래서 이런 구조는 협업하는 회사에서 걸맞지 않는 코드 짜임새라고 생각했다. 그래서 관리하기 편한 코드를 구성하
combine은 발행하는 Publisher, 구독하는 Subscriber 로 나뉘어 비동기 이벤트를 처리하기 위한 프레임워크이다. 비슷한 기능으로 rx가 있지만 combine은 애플에서 직접 제공한 프레임워크이기 때문에 추후에 rx보단 combine이 쓰이게 될 확률이