Lower Camel Case : 함수, 메소드, 변수, 상수에 사용한다.High Camel Case : 타입(구조체, 클래스, enum, extension) 등에 사용된다.print() : 단순 문자열 출력.dump() : 인스턴스에 대한 자세한 설명(descript
변수 선언 키워드 : var변수의 선언 : var 변수명 : 타입 (타입을 반드시 명시해야 한다)변수의 선언 및 초기화 : var 변수명 : 타입 = 값값의 타입이 명확하다면 타입을 생략해도 된다.변수는 차후에 값을 할당할 수 있다.초기화 되지 않은 변수를 print나
반드시 값을 할당할떄는 true, false만 가능하다.0과 1로 false와 true를 대체할 수 없다.반드시 값을 할당할떄는 Int자료형만 와야한다.Int형 타입 변수나 상수에 Double,Uint 등이 올 수 없다.반드시 값을 할당할떄는 UInt자료형만 와야한다.
Swift의 모든 타입을 지칭하는 키워드다른 데이터 타입에 Any타입의 값을 할당할 수 없다.모든 클래스 타입을 지칭하는 프로토콜Swift의 모든 클래스의 인스턴스를 쥐고 있을 수 있다.AnyObject타입은 기본 데이터 타입의 값이 들어올 수 없다.없음을 의미하는 키
순서가 있는 리스트 컬렉션으로 배열 자료구조이다..append(s)로 배열 끝에 원소를 추가할 수 있다..contains(s)로 배열에 원소 s가 존재하는지 확인할 수 있으며, true/false를 리턴한다..remove(at:index)로 배열에 원소를 삭제하고 값을
함수 선언의 기본형태반환값이 없는 경우 (return은 생략 가능)매개변수가 없는 경우함수의 매개변수에 전달인자를 할당하지 않아도 기본적으로 갖게되는 값이 때 매개변수 기본값을 갖는 매개변수는 매개변수 목록의 마지막에 위치하는 것이 좋다.매개변수 기본값을 가지는 매개변
다른 프로그래밍 언어와 마찬가지로 if, else if, else 키워드를 통해 표현한다.자바와 마찬가지로 조건문에는 반드시 Bool타입 자료형이 와야한다.반드시 {}는 붙여야하며, ()는 선택사항이다.switch문도 다른 프로그래밍 언어와 마찬가지로 switch, c
for item in items 형태로 표현한다.대체로 items 에는 컬렉션 타입의 변수가 온다.item은 items를 순회하는 iterator라고 보면된다.다른 프로그래밍 언어와 마찬가지로 while을 통해 표현한다.조건부 부분에는 반드시 Bool타입 변수가 와야한
Optional의 개념은 nil의 가능성을 문서화하지 않아도 코드만으로 충분히 표현 가능하도록 한다.이는 Optional이 아닌 경우에 별도의 검사 없이 코드를 작성할 수 있도록하여 안정성을 보장한다.nil이 있을 수도, 없을 수도 있는 개념이다.Optional타입은
프로퍼티는 cpp에서의 멤버변수, java에서의 필드와 비슷한 개념이다.메소드는 cpp에서의 멤버함수, java에서 메소드와 비슷한 개념이다.
구조체는 값 타입인 반면에, 클래스는 참조 타입이다.swift에서 클래스는 다중상속을 지원하지 않는다.전체적으로 구조체와 매우 동일하지만, 2가지 종류의 타입메소드가 존재한다.static 타입메소드는 하위 클래스에서 재정의가 불가능한 메소드이다.class 타입메소드는
enum은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의한다.각 case는 소문자 카멜케이스로 정의한다.가 case는 그 자체가 고유의 값이다.C언어의 enum처럼 정수값을 가질 수 있다.rawvalue를 사용하면되며, case 별로 각각 다른 값을 가져야된다.정
public struct Intpublic struct Doublepublic struct Stringpublic struct Dictionary<Key : Hashble, Value>public struct Array<Element>public struct
코드의 블록이다.일급 시민으로써 변수, 성수 등으로 저장이 가능하며, 전달인자로 전달이 가능하다.함수는 이름이 있는 클로저이다.클로저는 주로 함수의 전달인자로 많이 사용된다. 함수 내부에서 원하는 코드블럭을 실행할 수 있다.클로저가 함수의 마지막 전달인자라면 마지막 매
구조체, 클래스, 열거형과 연관된 값으로, 연산을 수행하거나 값을 저장할 수 있다.다만, 열겨형의 내부에는 연산 프로퍼티만 구현할 수 있다.저장 프로퍼티연산 프로퍼티 : var로만 선언할 수 있다.인스턴스 프로퍼티타입 프로퍼티저장 프로퍼티와 연산 프로퍼티의 기능은 함수
프로퍼티의 값이 변경될 때, 원하는 동작을 수핼할 수 있도록 한다.연산 프로퍼티 내부에는 프로퍼티 감시자기능을 수행하는 willSet, didSet 을 사용할 수 없다. -> 프로퍼티 감시자는 저장 프로퍼티의 값이 변경될 때 정의할 수 있는 것이기떄문에, 반드시 저장
스위프트의 모든 인스턴스는 초기화와 동시에 모든 프로퍼티에 유효한 값이 할당되어 있어야 한다.프로퍼티에 미리 기본값을 할당해두면, 인스턴스가 생성됨과 동시에 초기값을 지니게 된다.프로퍼티 기본값을 지정하기 어려운 경우에는 이니셜라이저를 통해 인스턴스가 가져야할 초기값을
String 타입은 Foundation 프레임워의 NSString이 bridge된 형식이다.문자열은 정수형 인덱스(ex. string\[2])와 같이 접근할 수 없다!문자 배열을 이용해 문자열의 초기화 메소드(String())에 넣어 문자열을 생성할 수 있다.문자열과
키 경로 프로퍼티는 값을 바로 꺼내오는 것이 아니라 프로퍼티의 위치를 참조할 수 있도록 할 수 있다. 즉, 키 경로를 저장해서 특정 타입이나 인스턴스의 특정 프로퍼티를 미리 지정해두고 사용할 수 있다. 키 경로 타입은 AnyKeyPath 라는 클래스에서 파생된다. 제일
다른 프로그래밍 언어들과는 다르게 스위프트는 구조체, 클래스, 열거형 등에서 메소드의 정의가 가능하다.구조체, 열거형에서 인스턴스 메소드를 정의할 때와 클래스 내에서 메소드를 정의할 때 차이가 있다.구조체나 열거형에서 프로퍼티의 값을 변경하는 메소드를 정의할 때는 mu
모듈 은 배포할 하나의 코드 묶음 단위로, 통상적으로 하나의 프레임워크나 라이브러리 또는 애플리케이션이 모듈 단위가 될 수 있다.소스파일 은 말 그대로 하나의 소스파일(.swift) 를 의미한다.open : 모듈 외부까지public : 모듈 외부까지internal :
옵셔널 체이닝은 옵셔널에 속해있는 nil 일지도 모르는 프로퍼티, 메소드, 서브스크립트 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정이다. 옵셔널에 값이 있다면 값을 추출할 수 있고, 값이 없다면 nil 을 반환한다.옵셔널이 자전거 체인처럼 꼬리를 물고 이어져
빠른 종료의 핵심 키워드는 guard 이다. guard 구문은 if 구문과 마찬가지로 Bool 타입의 값이 키워드 뒤로 따라오게 된다. 하지만, if 문과는 다르게 반드시 else 블록이 와야한다.guard 구문은 뒤에 따라 오는 조건이 false인 경우 else 블록
클래스, 구조체, 열거형에는 컬렉션, 리스트, 시퀸스 등 타입의 요소에 접근하는 단축 문법인 서브스크립트를 구현할 수 있다.한 타입에 여러 개의 서브스크립트를 구현할 수 있으며, 다른 타입을 인덱스로 갖는 여러 개의 서브스크립트를 중복 정의할 수 있다.\-get 메소드
다른 타입들과 구분되는 클래스의 특징이 상속 을 지원한다는 것이다.다른 프로그래밍 언어와 마찬가지로 메서드뿐만 아니라, 프로퍼티, 서브스크립트도 재정의(오버라이드) 할 수 있다.연산 프로퍼티를 정읳준 클래스에서는 프로퍼티 감시자를 구현할 수 없지만, 부모클래스에서 연산
타입캐스팅 다른 프로그래밍 언어(C, Java 등등..) 에서는 암묵적 타입 캐스팅 을 지원한다. 하지만 스위프트는 암묵적 타입 캐스팅을 지원하지 않을 뿐더러, 다른 타입간의 변환을 매우 엄격하게 제한하기 때문에 스위프트에서 타입캐스팅 은 조금 다른 의미로 쓰인다. 우
스위프트 API Design Guideline을 읽고 정리한 내용입니다.잘못된 내용이나, 개선사항이 있는 경우 피드백 부탁드립니다!사용시점의 명확성은 매우 중요하다. 내가 디자인한 API가 다른 사람이 사용할 떄도 쉽게 사용할 수 있도록 디자인 해야 한다. 이게 가장