Programming(38)
-
[iOS] Delegate Pattern 이해하기
Delegate Pattern을 이해하기 위해서는 반드시 프로토콜에 대한 학습이 선행되어야 한다. 프로토콜을 먼저 학습하고 읽을 것을 권장한다. https://daltonic.tistory.com/31 Delegate Pattern 이란? 델리게이트 패턴(위임 패턴)이란 디자인 패턴으로 어떤 객체(클래스의 인스턴스)가 자신이 가지고 있는 일들 중 일부분을 다른 객체에게 위임하여 처리시키는 패턴을 말한다. 조금 안 와닿을 수 있는데, 속된 말로 짬 때린다(?)라고 이해하면 편할 것 같다. 쉽고 편한 이해를 위해 델리게이트 패턴을 적용시켜서 어떻게 짬을 때리는지 보자! 우선 어떤 일을 시킬 건지 프로토콜을 만들어줬다. 소대장 대신 팀의 건강을 체크하고 훈련을 시킬 예정이다. 다음으로 팀멤버뷰컨트롤러와 소대장..
2022.01.16 -
[iOS_Swift] Properties - 연산 프로퍼티(Computed Property)
연산프로퍼티란? Swift 문서에 따르면, 연산프로퍼티는 클래스, 구조체, 열거형에서 정의되어질 수 있고 실제로 어떤 값을 저장하지 않으며, 대신 getter와 optional setter를 제공하고 다른 프로퍼티들과 값들을 간접적으로 set한다고 나와있다. 요약해서 쉽게 말하자면 연산프로퍼티란, 저장프로퍼티와 달리 특정한 값을 저장하지 않고 어떤 프로퍼티와 값들을 연산해서 새로운 값을 설정해주는 프로퍼티이다. 예시를 통해 이해해보자. 애플 예시를 활용해보려 했는데, 한번에 머릿 속에 팍 들어오는 예시는 아니어서 다른 간단한 걸로 만들었다. 구조체를 총 3개를 만들어줬고 군인의 총점수를 얻기 위한 연산프로퍼티를 구현했다. 연산프로퍼티는 위의 totalScoreCalculate처럼 표현해주면 된다. get..
2022.01.13 -
[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