ios(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] 누락된 Crashlytics dsym파일 로컬머신에서 찾기[SPM]
만약 이미 앱스토어에 업로드한 앱에서 누락된 dsyms파일이 있을 경우에는 아래 블로그를 참조해서 해결하자. https://ahyeonlog.tistory.com/59 그런데, 만약에 로컬 머신에서 테스트하다가 누락된 dsym파일이 있다면 직접 어떤 파일이 누락된건지 알아내야 한다. 가령 나의 경우, 다음과 같은 파일들이 누락되었다. 그러면 얘네들의 UUID를 활용해서 누락된 해당 파일을 찾아줘야 하는데, 예시를 위해 제일 하단의 FFF9B5DF~~~를 찾아보자. 찾기 위해, 다음의 키워드를 터미널에 입력해주자. mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done 그러면 이렇게 쭈욱 뜨는데 누락된 UUID를 찾아주면 된다. 찾은 ..
2021.12.18