본 작성글은 swift 공식 문서를 참고하였습니다. Swift에 대해 변수는 항상 사용 전에 초기화되어야 한다. 배열인덱스는 범위초과에러 out-of-bounds 에러에 대해 검사되어야 한다. 정수는 오버플로우에 대해 검사되어야 한다. 옵셔널은 nil값이 명시적으로
예시 코드로 살펴보는 Swift UI 그리고 이걸 JS/CSS로 바꾸어보는iosVStack : 수직정렬 , alignment : 교차 축 앞단 정렬HStack : 수평정렬 , s ㄴ View를 배치할 때 사용하는 자체 spacing이 있다. ㄴ 이를 완전히 없애고
swift에서 mutating 키워드는 구조체 struct나 열거형 enum 내에서 인스턴스의 프로퍼티를 수정할 수 있는 메서드를 정의할 때 사용된다. 기본적으로 구조체와 열거형은 값타입이기 때문에 인스턴스 메서드는 인스턴스의 프로퍼티를 직접 수정할 수 없다.mutat
변수는 항상 사용 전에 초기화되어야 한다. 배열인덱스는 범위초과에러 out-of-bounds 에러에 대해 검사되어야 한다. 정수는 오버플로우에 대해 검사되어야 한다.옵셔널은 nil값이 명시적으로 처리되도록 한다. ( nil 은 null과 비슷한 개념 )메모리는 자동으
let : 상수상수는 선언하면서 초기화할 필요는 없지만 반드시 한번 할당해야함.var : 변수상수 또는 변수는 할당하려는 값과 동일한 타입이어야 하고, 상수 또는 변수 선언 시에 값으로 초기화하면 컴파일러는 자동으로 타입매칭을 한다.초기값이 충분한 정보를 제공하지 않거
조건문이나 루프변수를 둘러싼 소괄호는 선택사항이다. 문 statements을 둘러싼 중괄호는 필수사항이다.if / switch조건을 기준으로 값을 선택하기 위해 할당의 동등사인 =뒤나 return뒤에 if 또는 switch를 작성할 수 있다.if와 let을 사용하여 누
함수를 선언하려면 func를 사용한다. 소괄호 안에 인수의 리스트와 함수의 이름으로 호출한다. 함수의 반환타입에서 파라미터이름과 타입을 구분하기 위해 ->을 사용한다.기본적으로 함수는 파라미터 이름을 인수의 라벨로 사용한다. 파라미터 이름 전에 인수라벨을 작성하거나,
class뒤에 클래스의 이름을 사용하여 클래스를 생성한다.클래스에서 프로퍼티 선언은 클래스의 컨텍스트 context 안에 있다는 점을 제외하고는 상수 또는 변수를 선언하는 방법과 동일하다.마찬가지로 메서드와 함수선언도 동일한 방법으로 작성된다.클래스 이름 뒤에 소괄호를
여기서부터 잘 봐야비동기적으로 실행되는 함수를 나타내기 위해서 async를 사용한다.async를 function 키워드 앞에 붙이는 점이 Javascript와 다르다.앞에 await을 작성해서 비동기 함수를 호출하는 것을 나타낸다.비동기 함수를 호출하기 위해서async
본 작성글은 swift 공식 문서를 참고하였습니다. REST API에 대한 GET/POST요청 url을 아예 URLComponent라는 객체를 찍어내서 안의 속성을 수정하는 방법도 있고... (이건 뭔가 C# 스럽다) 클래스형 개발에서 함수형 개발로 넘어가는 과정에
프로토콜 선언을 위해서 protocol 키워드를 사용한다.클래스, 열거형, 그리고 구조체는 프로토콜을 채택할 수 있습니다.클래스의 메서드는 항상 클래스를 수정할 수 있으므로, SimpleClass의 선언에는 mutating으로 표시된 메서드가 필요하지 않다. 새로운 메
Error 프로토콜을 채택하는 모든 타입을 사용하여 에러를 나타낸다. 에러를 던지기 위해서 throw를 사용하고 에러를 던질 수 있는 함수를 나타내기 위해서 throws를 사용한다. 함수에서 에러가 발생하면 함수는 즉시 반환되고 함수를 호출한 코드가 에러를 처리한다.에
일급객체 First-class Citizen는 등급이 제일 높은 객체라기 보다는 급이 하나인 객체이다.일급객체가 되기 위한 충족조건은 다음과 같다.전달인자로 전달가능하다.변수나 데이터구조 안에 담을 수 있다.반환 값으로 사용가능하다.함수는 일급객체이다. 때문에 swif
guard let에서의 상수는 스코프가 전역이다guard let에서의 상수는 다음과 같은 명명은 불가능함함수 안에서 매개변수로 넘어온 값은 guard let의 상수 이름으로 쓸 수 있지만,함수 내에서 사용하는 변수나 상수이름은 다시 guard let의 상수 이름으로 지
nil은 옵셔널을 통해서만 할당할 수 있다.optional(nil)은 없다.optional unwrapping에서 if let을 사용할 때 조건을 지정해줄 수 있음
자동추출해주나, 특정 조건일 때만 해준다.옵셔널형을 비옵셔널형에 대입할 때 별도의 추출과정 없이 대입이 가능하다.nil일 때 빼고
swift에서의 컬렉션은 struct이다. 때문에 다음의 코드에서을 한다면 원래는 값복사가 일어나야 한다.메모리 상에서array1 -------------> \[1,2,3,4]array2 -------------> \[1,2,3,4] 이렇게 존재해야하지만우리가 arra
\- 문자열 경계문자(" ") 앞뒤에 원래 우리가 일반적인 문자열 ("")안에서 \\나 "를 넣고 싶다면라고 해야했었는데
swift4부터 추가된 프로토콜json을 간편하고 쉽게 인코딩 / 디코딩할 수 있게 해준다. Encoding과 Decoding은 protocol이다. Codable을 사용해서 JSON으로 인코딩하고 싶다면 반드시 Codable이라는 프로토콜을 준수하고 있어야 한다.다음
정의 parameter 매개변수 argument 전달인자 (인자)값타입을 참조로 전달하기inout 매개변수값 타입의 값을 참조 타입의 값처럼 참조로 전달하고 싶을 때 사용하는 파라미터함수 호출 시 인자 앞에 &붙이기이것은 c처럼 동작함인자 기본값인자에 기본값을 설
함수 안에 함수를 선언할 수 있다.outer함수 내부에서 inner를 실행할 수 있지만outer함수 외부에서 inner를 실행할 수 없음상수/변수에 함수 대입이렇게 해도 되지만이런 경우가 있을 수 있음 (오버로딩하는경우)\*여기에서 주의해야할 점은 이렇게 test2에
클로저는 보통은 익명함수로 인식되지만, 정확하게는 func함수들도 모두 클로저이다. ( 함수도 클로저다 )클로저는 크게 2가지로 나뉜다. ㄴ Named Closure ㄴ Unnamed Closure클로저의 실행위의 클로저를 그냥 closure() 이렇게 실행할 수
swift에선 2개의 배열이 존재한다. Array - swift에서 제공NSArray - foundation에서 제공
객체 하나로 특정용도에 한해서 공용으로 쓰는 디자인 유형static프로퍼티로 instance 생성init함수 접근제어자를 private로 지정init 함수를 호출하여 Instance를 또 생성하는 것을 막기 위해서싱글톤 클래스 접근아까 생성해두었던 static 프로퍼티
미루다 연기하다 라는 뜻을 가진다. 함수 안에서 작성되는 클로저이다.작성된 위치와 상관없이 함수 종료 직전에 실행되는 문이다.아래와 같이 생겼다.defer를 읽기 전에 함수가 종료되면 defer는 실행되지 않는다.하나의 함수에서 여러번 defer를 호출가능하며, 실행순
범용타입이다.타입캐스팅을 수행할 때 일반적으로 상속 관계에 있는 클래스끼리만 캐스팅이 가능하다.그러나, Any, AnyObject타입인 경우 상속 관계가 아니어도 타입 캐스팅을 할 수 있다.상속관계에 있을 때, 업캐스팅(as), 다운캐스팅(as?, as!)을 할 수 있
타입캐스팅 인스턴스의 타입을 확인하거나, 해당 인스턴스를 슈퍼클래스나 하위 클래스로 취급하는 방법이다. swift에서 타입 캐스팅은 is나 as 연산자로 구현한다. 타입 캐스팅을 사용하여 타입이 프로토콜에 적합한지 여부도 확인할 수 있다. is is연산자는 타입을
기존 클래스, 구조체, 열거형 타입에 새로운 Property, Method, Initializer등을 추가하는 것원본 타입(소스코드)에 접근하지 못하는 타입들도 확장해서 사용할 수 있다. extension이란 키워드를 사용하여 확장한다.소멸자는 extension으로 구
까지 줄어들 수 있다.옵셔널은 열거형으로 구현이 되어있고, 제네릭으로 선언이 되어있다. 때문에 어떤 타입으로도 받을 수 있다. ㄴ none ㄴ some(Wrapped)줄이지 않고, enum인 점을 감안해서 사용하면 다음과 같이 쓸 수 있다.switch를 쓸수는 있는
기본 자료형은 자동으로 컴파일러가 Comparable을 준수한다.String은 유니코드 값이 기준이다.구조체에서 Comparable 프로토콜을 채택하기 위해서는 단순히 채택만 해서는 안되고, 어떻게 무슨 값을 비교해주어야 할지를 명시해주어야 한다. 이를 위해서 메서드를
프로토콜 안의 프로퍼티 / 메서드는 모두 require이다. 따라서 기본값으로 세팅을 하거나 채택하는 곳에서 구현하지 않으면 에러가 난다. 만약에 옵셔널로 형을 지정해놓고, 값을 할당해주지 않는다 하더라도 그것도 기본값으로 세팅을 한거다. 옵셔널자료형은 초기화가 되지
swift에서의 컬렉션은 구조체이나, 값의 복사를 바로 하지는 않는다. swift에서의 컬렉션은 struct이다. 때문에 다음의 코드에서 을 한다면 원래는 값복사가 일어나야 한다. 메모리 상에서 array1 -------------> [1,2,3,4] array