iOS

iOS

[Swift] 이미 사용된 변수 사용하기, 백틱으로 예약어를 식별자로 사용하기

Swift에서 예약어를 identifier로 사용해야 할 때가 있는데, 이를 위해 백틱(``)을 사용합니다. 예를 들어, default, class, struct와 같은 예약어들을 변수명, 함수명 또는 열거형 케이스명으로 사용할 수 있습니다. 이 기능은 주로 기존 코드와의 호환성이나 특정 도메인 용어를 그대로 사용하고자 할 때 유용합니다. option + ₩  // 예약어를 사용한 열거형 정의public enum TextFieldState { case `default` case focused case disabled}// 열거형 사용 예시let currentState: TextFieldState = .defaultswitch currentState {case .default: pri..

iOS

[Swift] @propertyWrapper로 UserDefaults 구현해보기

이 글은 작성자의 학습을 위하여 작성되었습니다@propertyWrapper, 프로퍼티 래퍼?속성 래퍼는 속성을 정의할 때 코드의 반복을 줄이고, 속성의 동작을 재사용할 수 있게 해주는 기능입니다.  @propertyWrapper는 WWDC 2019에서 Swift 5.1과 함께 도입되었습니다. 프로퍼티의 관리를 용이하게 하기 위해 사용됩니다. 이를 통해 코드의 중복을 줄이고, 가독성을 높이며, 특정 동작을 프로퍼티에 자동으로 적용할 수 있습니다. 선언 Attributes의 대표적인 것 중 하나 입니다. WWDC 2019 Modern Swift API Design 중 PropertyWrapper 훑어보기 Property Wrappersget과 set을 사용하여 매번 코드를 작성한다면 너무 많은 공간을 차지합..

iOS/UIKit

[UIKit] Line Height(행간), Line Spacing(자간) 조절하기

기본인 System font에 대하여 옵션으로 font의 Size와 Weight에 대해 다룰 수 있습니다. 또는 Custom Font를 이용한다면 Custom Font의 주어진 이름과 Size 옵션을 조절할 수 있습니다. 디자이너와 협업을 하는 과정에서 처음으로 행간과 자간에 대해 다루는 과정을 마주했습니다.font size와 개별로 행간을 조절해야 할 때는 어떻게 해야할까요? Line Height행간과 Line Spacing(자간)에 대해 어떻게 조절할 수 있을까 고민해보았습니다.   우선 Font Size와 LineHeight에 대해 인지하기 위해 직접 값을 출력해보면서 확인해봅니다. 아하! 폰트 사이즈와 별개로 Line Height에 대한 값이 존재합니다.  이외에도 font에 대한 더 다양한 속성..

iOS

Xcode File Template 커스텀하기

Xcode 파일은 Xcode 프로젝트에서 사용되는 다양한 파일 형식을 말합니다. 여기에는 소스 코드 파일, 인터페이스 파일, 리소스 파일 등이 포함됩니다.  Xcode 파일 템플릿이란?Xcode 파일 템플릿은 새로운 파일을 생성할 때 미리 정의된 파일 구조와 내용을 자동으로 포함시키는 기능입니다. 이를 통해 개발자는 반복적인 작업을 줄이고, 프로젝트 전반에 걸쳐 일관된 코드 스타일을 유지할 수 있습니다.왜 Xcode 파일 템플릿을 사용하나요?효율성: 반복적인 파일 생성 작업을 자동화 → 시간을 절약일관성: 팀 프로젝트에서 코드 스타일과 파일 구조를 통일  기본 Xcode 템플릿 파일은 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates ..

iOS/UIKit

URLRequestConvertible 잘 사용해보자

앱의 크기가 커짐에 따라 네트워크 스택을 구축하면서 일반적인 패턴을 채택하는 것이 중요합니다.이때 중요한 부분은 요청을 라우팅하는 방법입니다.Alamofire의 URLConvertible 및 URLRequestConvertible 프로토콜과 함께 Router 디자인 패턴이 이를 도와줍니다.“라우터”는 요청의 “경로” 또는 요청의 구성 요소를 정의하는 타입입니다.구성 요소에는 URLRequest의 요청을 만들기 위한 파라미터, 메소드 등이 포함될 수 있습니다.

iOS/SwiftUI

[SwiftUI] 왜 body에서 변수를 수정하지 못할까?

* 이 글은 작성자의 학습을 위하여 작성된 글입니다. 개발자는 animal이라는 변수를 통해 중앙의 Text를 바꾸고 싶습니다. 우선, 변경 버튼을 누르면 토끼라는 텍스트를 사자로 바꾸려합니다. Button의 클로저 영역에 버튼을 눌렀을 때, animal 변수의 값을 "사자"로 바꾸자고 생각합니다. 개발자는 너무 당연하게 animal = "사자" 라고 코드를 작성합니다. 어라! 에러메세지가 발생합니다. 왜 안될까요? 가장 먼저 에러메세지를 읽어봅니다. self가 불변이다. 여기서 self는 ContentView 입니다. ContentView가 불변이라는 뜻이겠군요. 왜 ContentView가 불변이라는 걸까요? ContentView에 대해 들여다 볼 시간입니다. ContentView는 View 프토토콜을..

iOS/SwiftUI

[SwiftUI] some View에 대해서, some과 Opaque Type

해당 포스팅은 작성자의 학습을 위해 작성된 글 입니다. Opaque Type이란? Opaque Type(불투명한 타입)은 함수로 역제네릭 함수라고 할 수 있습니다. 함수나 메서드의 반환 타입이 특정 프로토콜을 준수하지만, 구체적인 타입은 숨겨짐을 의미합니다. Swift에서는 some 키워드에 Opaque Type을 담아냅니다. 더 쉽게 이해해보겠습니다. SwiftUI의 View 프로토콜은 모든 뷰가 가지고 있어야 할 가장 기본적인 기능을 정의하고 있습니다. View 프로토콜에서 기본 규칙은 var body: some View { get } 프로퍼티를 생성하는 것입니다. 이 body 프로퍼티는 뷰의 내용을 구성하고, 화면에 어떻게 표시될지를 결정하는 역할을 합니다. 예를 들어, ContentView 구조..

iOS/SwiftUI

[SwiftUI] SwiftUI를 소개합니다.

* 이 글은 작성자의 학습을 위하여 작성된 글입니다. 2019년, WWDC 2019에서 Apple은 SwiftUI를 소개했습니다. iOS 13과 macOS Catalina 10.15에서 처음으로 지원되기 시작했습니다. SwiftUI의 등장은 Apple 플랫폼에서 UI 개발 방식에 큰 전환점을 가져옵니다. 선언적(Declarative) 프로그래밍 SwiftUI는 선언형 프로그래밍으로, 개발자가 UI의 최종 상태를 선언하면 시스템이 상태변화를 자동으로 처리하여 UI에 대한 코드가 더 간단하고 직관적입니다. 이전의 UIKit은 명령형 프로그래밍으로, UI 요소를 각각 단계별로 관리하고 상태 변화도 수동으로 처리해야했습니다! 명령형 VS 선언형, 무엇이 다를까? 예시로 아보카도 토스트를 만든다고 가정해봅시다. ..

iOS/UIKit

[Swift/RxSwift] flatMap VS flatMapLatestFrom, 뭐가 다를까?

flatMap flatMap 연산자는 들어오는 모든 Observable을 병렬로 구독하고, 이들 각각에서 방출되는 모든 아이템들을 단일 Observable 스트림으로 합칩니다. 만약 여러 Observable들이 동시에 아이템을 방출할 경우, flatMap은 이들 아이템들을 순서와 상관없이 즉시 방출합니다. 이는 동시에 여러 작업을 처리하고 각 작업의 결과를 계속 관찰하고 싶을 때 유용합니다. flatMapLatest flatMapLatest 연산자는 새로운 Observable이 들어올 때마다 이전에 구독한 Observable을 취소하고 새 Observable만을 구독합니다. 항상 최신 결과만을 처리하고 싶을 때 사용됩니다. 즉, 새로운 데이터나 요청이 들어올 때 이전 데이터는 더 이상 중요하지 않고 오직..

iOS

Swift로 코딩테스트 시작하기, 시간복잡도, 공간복잡도, 입출력

"무엇"을 사용해서 코딩테스트를 준비해야 하나? macOS > Command Line Tool(명령어 라인 도구)로 새로운 프로젝트를 생성합니다. 🤷‍♂️: 왜 playground에서 실행 안 하고 Command Line Tool에서 실행하는 걸까요? 🐶: 대부분의 OJ 플랫폼에서는 직접 입출력 부분까지 구현해야 합니다. playground에서는 readLine() 메서드를 사용할 수 없기 때문에 Command Line Tool을 사용해야 합니다. 또한 playground에서는 REPL(Read-Equal-Print Loop) 방식으로 동작하기에 디버깅이 어렵습니다. 이런 이유로 코딩테스트를 준비하기 위해서는 Command Line Tool을 사용합니다. "어디서" 코딩테스트를 연습할 수 있는가? 일반적..

쨈미니
'iOS' 카테고리의 글 목록