SWIFT(27)
-
[iOS_Swift] 프로토콜(Protocol) (1) - Property Requirements
우리는 스위프트의 언어적 특성을 얘기할 때, 함수형・객제지향과 더불어 프로토콜을 지향하는 언어라고 얘기한다. 그정도로 Swift를 이해함에 있어 프로토콜은 중요한 역할을 한다. 프로토콜이란? 공식문서의 정의에 의하면, 프로토콜은 특정한 작업이나 어떠한 기능의 부분을 충족시켜주는(suit) 요구사항들, 메서드, 프로퍼티의 청사진을 정의내린다고 설명하고 있다. 말이 조금 어려운데, 쉽게 생각하면 프로토콜이란 어떤 특정한 기능을 구현함에 있어 만들어야할 체크리스트, 반드시 준수해야할 사항 리스트 같은거라고 생각하면 조금 쉬울 것 같다. 예를 들어 군인을 육성함에 있어서 훌륭한 군인을 만드는 체크리스트가 있다고 가정해보자. 훌륭한 군인을 만들기 위한 메서드와 프로퍼티들을 넣어줬다. 훌륭한 군인을 만들기 위해서는..
2022.01.10 -
[iOS_Swift] 옵셔널(Optional) 제대로 이해하기
옵셔널(Optional)이란? 공식 문서에 의하면 '옵셔널'이란 값이 없을 수도 있는 상황(nil)에서 사용되어지는 표현으로, Swift의 특징 중 하나인 안전성을 문법을 적용시킴으로써 보장해주는 기능이다! 값이 없을 수도 있는 상황이라는게 조금 모호할 수도 있는데, 공식문서에서는 이러한 점을 보완하기 위해 다음과 같이 설명하고 있다. 요약하면, PossibleNumber라고 하는 String타입인 상수가 있고 ConvertedNumber라고 하는 상수가 있다. 컨버티드넘버는 파서블넘버의 값을 Int타입으로 초기화한 값을 갖는다. 그런데 초기화하는 과정에서 실패가 일어날 수도 있다. 위의 예시는 파서블넘버의 값이 숫자로만 이뤄진 String타입이기때문에 초기화가 성공하지만 만약 파서블넘버가 "Hello,..
2022.01.05 -
[iOS_Swift] 클로저(3) - 탈출클로저(Escaping Closure)
탈출클로저란? 함수 내부에 전달인자로 선언된 클로저를 함수외부로 반환된 후 실행이 되게 하는 클로저를 의미한다. 글로 적으면서도 말이 되게 어려운데, 최대한 쉽게 설명하면 함수가 종료된 뒤에 실행되는 클로저이다. 그럼 이게 왜 탈출클로저라는 명칭이 붙었느냐, 함수 내부에 전달인자로 있는 클로저가 함수가 종료되고 함수외부로 탈출!하기때문에 탈출클로저이다(..) 처음에 책을 봤을 때 이게 무슨 허무맹랑한 소리인가 싶었는데, 이해하고 다시 읽어보니 이보다 적합한 설명은 없는 것 같다. 어디에 주로 활용될까? 일반적으로 API를 호출하는 등 비동기 작업을 해야할 때 주로 쓰인다. 비동기 작업 자체가 한번에 여러작업을 하는 것이기에 순서가 뒤죽박죽이 될 수가 있다. 그렇기에 함수가 종료된 뒤에 실시하는 탈출클로저..
2021.12.31 -
[iOS] 앱의 생명주기 이해하기(App's Life Cycle)
앱의 생명주기란? 간단하게 이해해보자면 앱의 생명주기란, 어떠한 앱이 실행(Active)되고 중단되는(Suspend) 등 앱의 상태와 관련된 모든 일련의 과정들을 뜻한다. 앱의 상태는 총 5가지로 구분된다. Not Running, Foreground InActive, Foreground Active, Suspended, Background(Running) 이렇게 구성되며, 각각은 유동적으로 움직인다. 위의 그림을 통해 설명하면, 최초에 앱이 실행되면 런치스크린이 켜지고 앱은 Foreground InActive상태가 된다. 이후 앱의 UI가 나오고 앱은 Foreground Active 상태가 된다. 앱을 사용하다가 앱을 잠시 끄기 위해 홈버튼을 누르게 되면, 앱은 다시 Foreground InActive ..
2021.12.29 -
[iOS_Swift] 강한참조와 약한참조 + 참조타입, ARC
강한참조와 약한참조란? - 참조에 대한 이해 강한참조와 약한참조라는 표현을 이해하기 전에 저 '참조'라는 단어를 먼저 이해해볼 필요가 있다. 참조가 뭘까, 무언가를 참고한다는 의미인 것 같은데 뭘 참고하는 것일까. 참조라는 표현을 이해하기 위해서는 우리는 다시 또 조금 더 상위의 개념인 클래스가 어떤 타입인지를 이해해야 한다. 클래스는 레퍼런스 타입, 즉 '참조'타입이다. 따라서, 클래스의 인스턴스들은 해당 클래스의 다른 인스턴스들을 참조할 수 있다. 예시를 통해보자. 똑같은 형식으로 클래스와 구조체를 만들어줬다. 코드를 보면 student2 인스턴스는 student1 인스턴스를 '참조' 하고 있다. 쉽게 생각하면, student1과 2는 일종의 일심동체라고 보면 된다. 따라서, 1의 학생명은 'Kim'..
2021.12.23 -
[iOS_Swift] 프로퍼티 감시자(Property Observers)(코드x)
프로퍼티 감시자란? 어떤 저장프로퍼티와 부모클래스로부터 상속받은 저장프로퍼티, 연산프로퍼티에 새로운 값이 할당될 때, 그러한 변화들을 관찰하고 호출(respond)하는 역할을 수행하는 것이다. 프로퍼티 감시자의 특징 1. 프로퍼티의 값이 변경될때마다 호출됨.(~~~~called every time a property's value is set.) 2. 새로운 값이 기존의 값과 같더라도 호출됨.(~~~~even if the new value is the same as the property current value.) 3. 지연저장프로퍼티에는 감시자를 넣을 수 없음.(~~~~except for lazy stored properties.) 3. 부모클래스로부터 상속받은 저장프로퍼티, 연산프로퍼티에도 넣을 수..
2021.12.18