[Swift] Swift Interview Questions - Beginner(초급)
·
Swift/개념 & 응용
서론 raywenderlich의 Swift Interview Questions에 답변을 달아보려고 합니다. Beginner, Intermediate, Advanced로 나뉘어져 있는데 이번 포스팅에서는 Beginner 질문에 대한 답변입니다. Swift 공부를 하면서 제대로 이해를 했는지, 무엇을 모르는지 알 수 있는 좋은 기회가 될 것 같아요 ㅎ Question #1 tutorial1의 difficulty는 1, tutorial2의 difficulty는 2입니다. 구조체는 값 타입이기 때문에 인스턴스의 변화가 다른 인스턴스에 영향을 주지 않기 때문입니다. 만약 Tutorial이 클래스였다면 tutorial1과 tutorial2는 같은 참조 인스턴스를 가지므로 tutorial1의 difficulty도 2..
[iOS] 카멜레온 개발 일지 - 6 (async/await 적용하기)
·
iOS 프로젝트/카멜레온
completion handler 리팩토링 기존 비동기 처리를 completion handler를 이용했습니다. (자세한 내용은 여기를 확인해주세요.) 최근에 공부한 async / await를 이용해 리팩토링을 진행해보았습니다. 이번 포스팅에서는 아주 일부분만 간단하게 다루려고 해요! 그럼에도 코드가 달라진게 충분히 보이거든요. 기존 코드 오늘 포스팅에서 다룰 코드는 파이어베이스에서 최신 버전과 강제 업데이트 버전을 가져오는 역할로 아래 로직을 수행합니다. 파이어베이스에서 version 값을 읽는다 version 값을 읽은 뒤 version/data를 가져온다. 1번이 끝난 뒤 2번이 진행돼야 하기 때문에 completion handler를 이용해 처리했습니다. FirebaseService.shared...
[Swift] 공식 문서 - Automatic Reference Counting(ARC)
·
Swift/Swift 가이드
안녕하세요. 개발하는 정주입니다. 오늘은 "Automatic Reference Counting"를 정리해보겠습니다. * 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으며 잘못된 번역이 있다면 댓글로 알려주세요. 새로 배운 점 참조 카운트는 클래스의 인스턴스에서만 적용된다. ARC는 메모리 해제 뿐만 아니라 메모리 할당, 추적의 역할도 한다. 약한 참조는 다른 인스턴스의 수명이 더 짧을 때 사용해야 한다. 미소유 참조에 대한 개념 미소유 참조는 다른 인스턴스의 수명이 같거나 더 길 때 사용해야 한다. 모두 nil이 허용되면 weak를 이용해 강한 순환 참조를 방지한다. nil이 허용되는 하나의 속성과 nil이 될 수 없는 다른 속성일 때는 unowne..
[Swift] 공식 문서 - Methods
·
Swift/Swift 가이드
* 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으며 잘못된 번역이 있다면 댓글로 알려주세요. 새로 배운 점 mutating 메서드는 self 프로퍼티에 완전히 새로운 인스턴스를 할당할 수 있다. 열거형에서 mutating 메서드는 암시적 self를 같은 열거형의 다른 case로 설정할 수 있다. 메서드의 결과를 사용하지 않을 때 @discardableResult를 붙이면 "Result of call to ~~~ is unused" 경고를 표시하지 않는다. 서론 메서드는 클래스, 구조체, 열거형 안에 정의되는 함수(function)입니다. 메서드는 인스턴스 메서드와 타입 메서드를 정의할 수 있습니다. 인스턴스 메서드는 특정 작업 및 기능을 캡슐화하여..
[Swift] Property Wrapper
·
Swift/개념 & 응용
Property Wrapper Property Wrapper는 Swift 5.1에 나온 개념으로, 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티를 정의하는 코드 사이에 분리 계층을 추가합니다. 구조체, 클래스, 열거형의 local stored variable에서만 사용 가능하고, 전역 변수나 연산 프로퍼티에서는 사용 불가능해요. 정의는 아주 어렵지만... 보일러 플레이트 코드를 줄일 수 있는 유용한 기술입니다. (*보일러 플레이트 코드 : 유사한 코드가 여러 곳에서 사용되며, 반복적으로 비슷한 형태를 띄는 코드) SwiftUI에서 자주 보인다고 하는데요(전 아직 SwiftUI를 안 해봄 ㅠ) @Published, @Binding, @ObservedObject, @State 등이 Property Wr..
[iOS] viewWillLayoutSubviews와 viewDidLayoutSubviews
·
iOS/개념 & 개발
선행 내용 아래 포스팅을 먼저 보고 오시면 좋습니다 ViewController의 Lifecycle을 다룬 내용입니다. [iOS] UIViewController 생명주기(Life Cycle) 알아보기 안녕하세요. 개발하는 정주입니다. 오늘은 "UIViewController 생명주기(Life Cycle)"에 대해 알아보겠습니다. 마지막에는 프로젝트를 생성해 생명주기 메서드 호출을 알아보겠습니다. 생명주기 흐름 jeong9216.tistory.com Layout 관련된 생명 주기 viewWillAppear()와 viewDidAppear() 사이에 레이아웃이 결정되기 전, 후의 생명 주기 메서드가 있습니다. 바로 viewWillLayoutSubviews()와 viewDidLayoutSubview() 입니다. 뷰..
[iOS] URL Loading System
·
iOS/개념 & 개발
URLSession을 공부하기 전 The URLSession API involves many different classes that work together in a fairly complex way which may not be obvious if you read the reference documentation by itself. Before using the API, read the overview in the URL Loading System topic. The articles in the Essentials, Uploading, and Downloading sections offer examples of performing common tasks with URLSession. URLSessio..
[iOS] 앱의 생명 주기(Life Cycle)
·
iOS/개념 & 개발
앱의 생명 주기 앱이 최초 실행될 때부터 앱이 종료될 때까지 앱은 여러 상태를 가집니다. 많이 들어보셨을 background, foreground도 앱의 생명 주기 중 하나이죠. 참고로 앱의 생명 주기는 공식 문서에 너무 자세히, 정확하게 서술되어 있습니다. 해당 포스팅과는 별개로 공식 문서는 꼭 읽어보시길 권장드립니다. Apple Developer Documentation developer.apple.com 앱의 생명 주기는 왜 알아야 할까? 앱의 상태는 현재 수행 가능한 동작과 수행 불가능한 동작을 결정짓습니다. Foreground 상태인 앱은 화면을 점유하고 있기 때문에 시스템 리소스보다 높은 우선순위를 가지고 있습니다. Background 상태인 앱은 최소한의 작업을 수행해야 합니다. 앱의 상태에..
[iOS] autoreleasepool
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "autoreleasepool"에 대해 알아보겠습니다. autoreleasepool의 개념이 낯설 수 있는데요. ARC와 메모리 관리에 대한 개념이 어느정도 있어야 이해하기 편하실 겁니다. ARC 포스팅 보러 가기 [Swift] ARC 정리 & 실습해보기 안녕하세요. 개발하는 정주입니다. 오늘은 "ARC"에 대해 알아보겠습니다. ARC의 개념은 공식 문서가 최고라고 생각하기 때문에 공식 문서 번역으로 진행했습니다. 이번 포스팅에서는 간단한 개념 jeong9216.tistory.com 메모리 관리 개념 살펴보기 About Memory Management About Memory Management Application memory management is the pr..
[iOS] 프레임워크(Framework)와 라이브러리(Library)
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "프레임워크(Framework)와 라이브러리(Library)"에 대해 알아보겠습니다. 익숙한 개념이라 잘 알고 있다고 생각했는데 착각이었더라고요. 프레임워크와 라이브러리가 무엇인지 정확히 알아봅시다. 마지막에는 프레임워크와 라이브러리의 차이점에 대해서도 알아보겠습니다. 프레임워크(Framework) 프레임워크에 대해 먼저 알아봅시다. 프레임워크 개념 software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-sp..
[Swift] ARC 정리 & 실습해보기
·
Swift/개념 & 응용
안녕하세요. 개발하는 정주입니다. 오늘은 "ARC"에 대해 알아보겠습니다. ARC의 개념은 공식 문서가 최고라고 생각하기 때문에 공식 문서 번역으로 진행했습니다. 이번 포스팅에서는 간단한 개념 정리 후 실습을 해보겠습니다. 틀린 내용이 있을 때 댓글로 알려주시면 정말 감사하겠습니다. ARC 공식 문서 번역 보러 가기 [Swift] 공식 문서 - Automatic Reference Counting(ARC) 안녕하세요. 개발하는 정주입니다. 오늘은 "Automatic Reference Counting"를 정리해보겠습니다. * 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으 jeong9216.tistory.com ARC란? ARC란 Automatic Re..
[iOS] UIViewController 생명주기(Life Cycle) 알아보기
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "UIViewController 생명주기(Life Cycle)"에 대해 알아보겠습니다. 마지막에는 프로젝트를 생성해 생명주기 메서드 호출을 알아보겠습니다. 생명주기 흐름도 생명주기 흐름도를 먼저 보도록 하겠습니다. UIViewController의 생명주기는 위 흐름도대로 진행됩니다. 메서드 이름에 view가 들어간 것은 진하게 표시하였습니다. 하나하나 살펴보도록 합시다. 0. init init 과정은 storyboard나 코드로 view controller를 생성하는 과정입니다. UIViewController의 생명주기로 말하기엔 애매하고 생명주기에 들어서기 전 단계가 더 정확하겠네요. 1. loadView loadView는 컨트롤러가 관리하는 view를 생성하고..
[iOS] 카멜레온 개발 일지 - 5 (업데이트 Alert)
·
iOS 프로젝트/카멜레온
안녕하세요. 개발하는 정주입니다. 오늘은 카멜레온 개발 일지 - 5 (업데이트 Alert)에 대해 포스팅하려고 합니다. 반드시 업데이트를 해야 할 때 Alert을 띄워서 앱스토어로 이동시키는 기능을 많이 보셨을 것입니다. 카멜레온 앱에서도 해당 기능이 필요해 보여 구현해 보았습니다. * 해당 포스팅은 대략적인 개발 일지로 자세한 내용은 필요시에만 따로 포스팅합니다. 업데이트 Alert가 왜 필요했을까? 카멜레온 앱에는 필요 시 업데이트를 요구하는 Alert를 띄웁니다. 개인적으로 좋아하진 않지만 직접 앱을 개발해보니 필요한 상황이 있었습니다.. ㅠ 버그 발생 카멜레온 앱 릴리즈 초기에 심각한 버그가 발견되었습니다. 가로로 찍은 사진을 서버로 보내면 파일은 정상적으로 보이지만 파이썬에서는 회전시켜서 loa..
[iOS] Custom TabBar에 Rounded 테두리(border) 추가하기
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "Custom TabBar에 테두리(border) 추가하기"에 대해 알아보겠습니다. 지난 포스팅과 이어지는 내용입니다. 2022.06.23 - [🍎 iOS/iOS 개발] - [iOS] 모서리가 둥근 Rounded TabBar 만들기 - Custom TabBar [iOS] 모서리가 둥근 Rounded TabBar 만들기 - Custom TabBar 안녕하세요. 개발하는 정주입니다. 오늘은 "모서리가 둥근 Rounded TabBar 만들기"에 대해 알아보겠습니다. Custom TabBar로 위쪽 모서리가 둥근 Rounded TabBar를 만들어 보겠습니다. 결과 미리 보기 오 jeong9216.tistory.com 결과 미리 보기 오늘 알아볼 Custom TabBar..
[iOS] 카멜레온 개발 일지 - 4 (API 통신과 URLSession, completionHandler)
·
iOS 프로젝트/카멜레온
안녕하세요. 개발하는 정주입니다. 오늘은 카멜레온 개발 일지 - 4에 대해 포스팅하려고 합니다. 서버와 API 통신을 하는 내용입니다. URLSession만을 사용했고 URLSession이 무엇인지에 대한 것은 따로 포스팅할 계획입니다. 라이브러리를 사용하지 않은 이유, URLSession만 쓰면서 발생한 문제(?)를 다뤄보겠습니다! +) 관련 내용을 공부하다보니 제가 느낀 문제점은 completionHandler로 비동기 처리를 하면서 발생한 것도 많았습니다. 그래서 이번 포스팅은 URLSession과 completionHandler의 단점 정도로 받아들여주시면 감사하겠습니다. 조금 더 개념이 잡히면 정리해서 다시 써야겠군요... ㅠㅠ * 해당 포스팅은 대략적인 개발 일지로 자세한 내용은 필요시에만 따..
유정주
'앱 개발' 태그의 글 목록 (4 Page)