반응형

전체 글 258

[Swift] 문법 다시보기 - 맵, 필터, 리듀스 (map, filter, reduce)

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 맵, 필터, 리듀스 맵 맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환한다 맵은 기존 데이터를 변형(transform)하는 데 많이 사용한다 필터 컨테이너 내부의 값을 걸러서 추출, 새로운 컨테이너에 값을 담아 반환한다, 기존 콘텐츠를 변형 X 리듀스 결합(combine)이라고 불려야 마땅한 기능, 컨테이너 내부의 콘텐츠를 하나로 합하는 기능 실행 두가지 형태로 구현, 첫 번째 리듀스는 클로저가 각 요소를 전달받아 연산한 후 다음 클로저 실행을 위해 반환하며 컨테이너를 순환하는 형태 func reduce(_ initialResult: Result, _ nextPartia..

Programming/Swift 2021.10.15

[iOS/Swift] 흔들어서 QR체크인 실행하기 파헤쳐보기 (motionShake)

흔들어서 QR체크인 실행하기 파헤쳐보기 코로나 때문에 식당, 공용 시설을 방문하게 되면 QR체크인을 해야하는데 카카오톡에서는 앱을 켜고 흔들면 QR체크인 화면이 뜨는 기능을 제공하고 있다. 이런 기능은 어떻게 만들 수 있을까? 예제 일단 코드로 먼저 시작해서 흔들기하면 네이버를 띄우는 예제를 해본다. 시뮬레이터에서 control+command+z 하면 Shake 모션을 할 수 있다. import UIKit import SafariServices class ViewController: UIViewController { @IBOutlet private weak var mainLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any..

Programming/iOS 2021.10.15

[Swift] 문법 다시보기 - 클로저(closure)

클로저 함수형 프로그래밍 패러다임을 접할 때 꼭 알아야할 개념 클로저, 제네릭, 프로토콜, 모나드 등이 결합하여 강력한 스위프트 C 언어나 Objective-C의 블록 또는 람다와 유사 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말함 → 함수는 클로저의 한 형태이다 { (**매개변수들**) -> **반환 타입** in **실행 코드** } // 클로저 표현 간소화 let reversed1: [String] = names.sorted { (first: String, second: String) -> Bool in return first > second } let reversed2: [String] = names.sorted { (first, second) -> Bool in retur..

Programming/Swift 2021.10.14

[Swift] 문법 다시보기 - 인스턴스 생명 및 소멸, 접근제어

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 인스턴스 생성 및 소멸 실패 가능한 이니셜라이저(Failable initializer) 클래스, 구조체, 열거형 등에 모두 정의 가능 실패했을 때 nil 반환하여 타입이 옵셔널로 지정, init? 키워드 사용 접근제어 모듈과 소스파일 스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계 모듈 : 배포할 코드의 묶음 단위, 통상 하나의 프레임워크나 라이브러리 또는 애플리케이션이 모듈 단위가 될 수 있음, import 사용 소스파일 : 하나의 스위프트 소스 코드 파일 기본 접근 제어 키워드 : internal

Programming/Swift 2021.10.13

[Swift] 문법 다시보기 - 메서드

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 메서드 인스턴스를 함수처럼 호출하도록 하는 메서드 특정 타입의 인스턴스를 문법적으로 함수를 사용하는 것처럼 보이게 하는 메서드 callAsFunction 이라는 이름의 메서드 구현 매개변수와 반환타입만 다르면 원하는 만큼 생성 가능, mutating, throws, rethrows도 함께 사용 가능 타입 메서드 타입 자체에 호출이 가능한 메서드를 타입 메서드라고 부른다, static 또는 class 사용 가능 static 키워드 사용, 해당 키워드 사용 시 상속 불가 class로 정의하면 상속 후 메서드 재정의가 가능

Programming/Swift 2021.10.13

[Swift] 문법 다시보기 - 프로퍼티

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 프로퍼티 타입 프로퍼티 각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티, 타입 자체에 영향을 미친다 저장 타입 프로퍼티 → 변수 또는 상수 선언 연산 타입 프로퍼티 → 변수로만 선언 저장 타입 프로퍼티 → 반드시 초깃값 설정, 지연 연산, 지연 저장 프로퍼티와는 조금 다르게 다중 스레드 환경이라고 하더라도 단 한 번만 초기화된다는 보장을 받는다. 코드 class AClass { // 저장 타입 프로퍼티 static var typeProperty: Int = 0 // 저장 인스턴스 프로퍼티 var instanceProperty: Int = 0 { didSet { // Self.typeProperty는 // AClass.typeProper..

Programming/Swift 2021.10.12

[Swift] 문법 다시보기 - 구조체와 클래스의 차이

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 구조체와 클래스의 차이 같은점 값을 저장하기 위해 프로퍼티를 정의할 수 있다 기능 실행을 위해 메서드를 정의할 수 있다 서브스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있다 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있다 특정 기능을 실행하기 위해 특정 프로토콜을 준수할 수 있다 다른점 구조체는 상속할 수 없다 타입캐스팅은 클래스의 인스턴스에만 허용된다 디이셜라이저는 클래스의 인스턴스에만 활용할 수 있다 참조 횟수 계산(RC)은 클래스의 인스턴스에만 적용된다 값 타입과 참조 타입 구조체는 값 ..

Programming/Swift 2021.10.12

[Swift] 문법 다시보기 - 함수

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 함수 일급객체, 하나의 데이터 타입으로 사용할 수 있음 각 함수는 매개변수 타입과 반환 타입으로 구성된 하나의 타입으로 사용(정의)할 수 있다는 뜻 어떤 상황에서 유용하게 사용할 수 있을지 고민! 함수의 전달인자로 값을 전달할 때는 보통 값을 복사해서 전달한다 값이 아닌 참조를 전달하려면 입출력 매개변수(inout)를 사용한다 var numbers: [Int] = [1, 2, 3] func nonReferenceParameter(_ arr: [Int]) { var copiedArr: [Int] = arr copiedArr[1] = 1 } func referenceParameter(_ arr: inout [Int]) { arr[1] = 1 ..

Programming/Swift 2021.10.11

[Swift] 문법 다시보기 - Switch

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. Switch fallthrough case 연속 실행 where 조건 확장 (ex: case "사원" where 연차 > 5;) default 한정된 범위의 값을 입력 값으로 받게될 때 값에 대응하는 각 case를 구현한다면 default는 구현하지 않아도 된다. 그렇지 않다면 default는 필수 예제 : case deafult, case _ unknown 열거형에 새로운 case가 추가되었을 때 논리적 오류가 발생할 수 있는 여지가 있음 이런 문제를 방지하기 위한 속성 예제 : @unknown case _

Programming/Swift 2021.10.10
728x90
반응형