📂 iOS/Swift
iOS에서 위치 테스트 시 번거로운 점 안드로이드와 달리 Fake GPS 사용이 불가하기 때문에 실제로 발품을 팔아야함 실시간 로그를 볼 수 없기 때문에 문제 발생 시 원인 파악이 어렵다 사소한 수정이 발생해도 빌드 후 다시 발품을 팔아야함 하여 실제 단말기에서는 방법은 없었지만 시뮬레이터에서 가상 위치로 테스트할 수 있는 방법을 공유드립니다. 하기 예제는 애플 공식 문서를 참고하여 지오펜싱(Geofencing : 지리와 울타리의 합성어)으로 준비하였습니다. 1. 위치 서비스 코드 작성 1-1. Project - Signing & Capabilities 위치 사용을 위해 Background Modes 추가 후 Location updates 항목을 체크해주세요. 1-2. Info.plist 위치 권한 팝업..
오늘은 iOS 앱 개발을 한다면 꼭 알아야 할 Delegate Pattern에 대해 정리해보겠습니다. 1. Delegate란 무엇인가? Delegate의 사전적 의미를 보면 대리자, 위임자 정도로 해석이 가능합니다 '뭘 위임한다는 거지...?' 라는 의문이 들 텐데, Swift에서는 Delegate 패턴을 통해 특정 기능을 위임하는 것이 가능합니다 한 객체에서 모든 프로세스를 처리하기엔 가독성, 코드 재사용성 측면에서 많은 손해를 보기 때문입니다 2. 사용법 이제는 델리게이트가 뭔지도 알겠고 왜 쓰는지도 알겠는데 어떻게 쓰는 걸까? delegate를 제대로 사용하기 위해서는 아래 내용들을 이해하고 있어야 합니다 프로토콜 (Protocol) : 대리자가 수신자에게 전달할 내용의 약속(규칙)입니다 수신자 (..
1. 개요 Custom Scheme 형식 custom-scheme://?callback=appCalled&message=앱 호출하기 custom-scheme : 앱의 스키마명을 의미합니다. 해당 값에 대한 설정은 다음 단계에서 진행합니다. ?{key}={value} : 앱을 호출할 때 전달할 파라미터입니다. &로 연결되어 계속 추가할 수 있습니다. Android iOS Difference iOS는 host가 없다 안드로이드와 달리 특정 ViewController를 열수 없고 단순 앱 호출이라는 점입니다. 물론 구현 방식에 따라 안드로이드와 동일하게 동작하게끔 구현할 수도 있습니다. 2. Custom Scheme 설정 Project - Info 항목 최하단에 URL Types 항목이 있습니다. Identi..
1. 들어가기 전에 GCD를 공부하기 전에 우리는 Queue라는 자료구조를 알고있습니다. 먼저 들어온 놈이 먼저 처리된다.. 라는건데 매표소에 줄을 서서 티켓을 산다고 생각하시면 편합니다. 이걸 먼저 얘기하는 이유는 앞으로의 내용이 큐와 연관되어있기 때문입니다! 2. GCD와 Dispatch Queue GCD(Grand Central Dispatch)는 스레드에 대한 관리를 개발자가 아닌 OS에서 처리할 수 있도록 애플에서 개발한 것 입니다. GCD에선 Dispatch Queue를 통해 작업을 관리합니다. Dispatch Queue에는 크게 두 종류로 나뉘는데 아래에서 조금 더 살펴볼게요. 2-1. Serial Queue - Main Queue(main) Serial Queue 등록된 작업을 순차적으로 ..
안녕하세요~ 차니에요! 오늘은 싱글톤 디자인 패턴에 대해 포스팅하겠습니다. 1. 싱글톤 패턴이란? 애플리케이션이 시작될 때 객체의 인스턴스를 최초 1회만 생성(static)하여 사용하는 디자인 패턴 2. 싱글톤 클래스 생성 방법 class SingletonClass { static let shared = SingletonClass() private init() {} } 스위프트에서는 static let으로 객체의 인스턴스를 할당해주면 끝입니다! 그리고 인스턴스가 추가로 생성되는 것을 방지하기위해 init() 함수의 접근 제어자를 private으로 선언합니다. 3. 싱글톤 사용 예제 class AppInfo { static let shared = AppInfo() private init() {} var m..
안녕하세요~ 차니에요! 오늘은 Swift의 고차 함수를 알아볼게요. 이전 포스팅 글 들과 연관되는 부분이 많으니 이해가 잘 안되시는 부분이 있다면 보고 오시길 추천드려요! 2021.07.27 - [iOS/Swift] - [Swift] 함수에 대해 알아보자 (기본편) 2021.07.23 - [iOS/Swift] - [Swift] 일급 객체(First-class citizen) 2021.07.26 - [iOS/Swift] - [Swift] 클로저(Closure)에 대해 알아보자. 1. 고차 함수(Higher-order function)란? 함수의 인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 지난 일급 객체편에서 스위프트의 함수는 일급 객체이기 때문에 함수의 인자로, 결과(리턴값)로 사용할 수 있다..
욜로~ 차니에요!! Xcode에서 외부 모듈(이하 라이브러리)을 사용하는 여러 방법들이 있는데요. Cocoapods 사용하기 Framework 사용하기 Swift Package Manager 사용하기 1, 2번 항목은 이전 포스팅에서 확인해보실 수 있고 오늘은 세 번째 항목인 SPM을 활용해보려고 합니다. 1. Swift Package 프로젝트 생성 2. Package.swift // swift-tools-version:5.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "MyLi..
안녕하세요~ 차니에요! 오늘은 Swift 기본 프로토콜에 대해 알아보도록하겠습니다. 1. 기본 프로토콜의 종류 1-1. Equatable 값이 같은지 비교할 수 있는 포로토콜 타입입니다! 한마디로 Equatable을 채택했다는 것은 ==, != 등의 비교 연산을 할 수 있다는건데 예시로 String의 구현부를 살펴봅시다. 1-2. Comparable Equatable을 보고왔으니 이제 쉽죠? 비교 연산자를 사용해서 값을 비교할 수 있는 타입입니다. 해당 프로토콜은 비교 연산뿐 아니라 동등 비교(==)도 함께 사용하기 때문에 Equatable을 함께 필수로 채택해주어야 합니다!! 1-3. CustomStringConvertible 마지막으로 CustomStringConvertible 프로토콜입니다. 사용자..