프로그래밍 패러다임 간단하게 설명하면 프로그래밍 스타일을 의미하며 전체적인 프로그래밍 방식을 말한다. 프로그래머에게 프로그래밍의 관점을 갖게 해주고 결정하는 역할을 한다. 객체지향 프로그래밍(OOP)과 프로토콜지향 프로그래밍(POP)에 대해서 알아보자. 객체지향 프로그래밍(OOP) 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 패러다임이다. 객체 중심의 프로그래밍으로서 부모 클래스의 상속을 통하여 수직 구조로 타입을 확장하는 방식으로 다형성을 구현한다. 특징 캡슐화 데이터와 코드의 형태를 외부로부터 알 수 없게하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법 추상화 클래스들의 공통적인 특성(변수, 메소드)들을..
Cocoapods, Carthage, SPM을 사용하는 이유는 라이브러리를 사용, 관리하기 위해서다. [iOS] 프레임워크와 라이브러리 프레임워크와 라이브러리에 대해 설명해보라하면 큰 틀과 느낌은 설명할 수 있을 것 같은데 자세히는 못할 것 같아서 알아본다. 자세히 설명을 못한다는건 모른다는 소리니까! 프레임워크 프레 harryjeon.tistory.com 라이브러리에 관한 내용은 이전 글에서 개념을 잡고오자. CocoaPods 장점 사용하기 쉽다. Dynamic, Static 라이브러리를 모두 지원한다. 대부분의 라이브러리가 지원한다. 의존성의 의존성까지 자동으로 관리해준다. 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다. 단점 라이브러리를 다운받아 설치하는데 시간이 오래걸린다. (pod..
프레임워크와 라이브러리에 대해 설명해보라하면 큰 틀과 느낌은 설명할 수 있을 것 같은데 자세히는 못할 것 같아서 알아본다. 자세히 설명을 못한다는건 모른다는 소리니까! 프레임워크 프레임워크를 직역해보자. frame(뼈대) work(일하다) 뼈대를 가지고 일하는 것이다. 정해진 레시피로 요리하는 밀키트로 예시로 들 수 있다. 일정한 형태의 틀(레시피)를 가지고 결과물을 만드는 것! 프레임워크란? 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이다. 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해주는 것이다. 프레임워크가 제공하는 뼈대 위에 개발자가 코드를 작성하여 개발할 수 있다. 특징 개발자들이 따라야 할 가이드라인을 ..
[Swift] 고차함수 (1) - map, filter, reduce 고차함수 ? 매개변수로 함수를 갖는 함수를 말한다. Swift 표준 라이브러리에서는 다음과 같은 고차함수를 제공한다. map filter reduce 모두 컨테이너 타입(Array, Set, Dictionary 등)과 Optional 타입에서 사 harryjeon.tistory.com 저번에 map, filter, reduce에 대해서 알아봤다. 이번에는 map 중 flatMap, compactMap에 대해 알아보자. FlatMap 선언 func flatMap(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] transform은 컨테..
고차함수 ? 매개변수로 함수를 갖는 함수를 말한다. Swift 표준 라이브러리에서는 다음과 같은 고차함수를 제공한다. map filter reduce 모두 컨테이너 타입(Array, Set, Dictionary 등)과 Optional 타입에서 사용할 수 있다. 왜 ? 함수형 프로그래밍의 장점을 간편하게 이용할 수 있기 때문이다. for-in 구문에 비해 코드가 간결해진다. 코드 재사용, 컴파일러 최적화 측면에서 성능 차이가 있다. 멀티스레드 환경에서 부작용을 방지한다. map - 변형 map 함수는 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성한다. for-in 구문과 비슷한 동작원리이지만 map를 사용하게되면 클로저 상수를 통해 코드의 재사용이 용이해지고 컴파일러 최적화 측면에서 성능이..
Observable 특정 형태의 데이터를 전달하는 이벤트를 비동기적으로 생성할 수 있는 객체이다. Hot Observable과 Cold Observable로 구분할 수 있다. Hot Observable 이름 그대로 뜨거워서 계속 흘리고 있는 스트림 Observable 생성과 동시에 이벤트를 방출한다. 구독 여부와 상관없이 이벤트를 발생시키기 때문에 일단 동작하기 시작하면 리소스를 사용한다. 이전에 방출한 데이터에 대해서는 받을 수 없다. 여러 Observer가 데이터를 공유할 수 있다. Hot Observable에는 Subject가 있다. 예를들어 API를 호출할 때 여러 부분에서 이 결과가 필요하다면 매번 API를 호출하는 것 보다 그 결과를 공유한다면 더 효과적일 것이다. 이때 Hot Observab..
https://harryjeon.tistory.com/60 [RxSwift] 곰튀김님의 RxSwift 강의 (2) 이전 글 [RxSwift] 곰튀김님의 RxSwift 강의 (1) Subject 만들 때 부터 어떤 데이터를 내보낼지 정해져있다. Observable처럼 값을 받을 수도 있지만 (subscribe) 외부에서 값을 통제할 수도 있다. (onNext) AsyncSubje harryjeon.tistory.com 곰튀김님의 RxSwift 강의를 듣는 도중 Relay, Subject, Driver가 나왔다. 강의에서 설명을 해주셨고 정리도 해놨지만 조금 더 찾아보려고 한다. Subject PublishSubject 초기값이 없다. 다른 Observer가 Subscribe한 순간 아무런 값도 주지 않는다..
위임 (Delegation) 위임은 클래스 혹은 구조체 인스턴스에 특정 행위에 대한 책임을 넘길 수 있게 해주는 디자인 패턴 중 하나이다. protocol DiceGame { var dice: Dice { get } func play() } protocol DiceGameDelegate: AnyObject { func gameDidStart(_ game: DiceGame) func game(_ game: DiceGame, didStartNewTurnWithDiceRoll diceRoll: Int) func gameDidEnd(_ game: DiceGame) } DiceGame 프로토콜을 선언하고 DiceGameDelegate에 선언해서 실제 DiceGame의 행위와 관련된 구현을 DiceGameDeleg..

이전 글 [RxSwift] 곰튀김님의 RxSwift 강의 (1) Subject 만들 때 부터 어떤 데이터를 내보낼지 정해져있다. Observable처럼 값을 받을 수도 있지만 (subscribe) 외부에서 값을 통제할 수도 있다. (onNext) AsyncSubject completed 되는 시점에 subscribe한 애들한테 가장 마지막 값을 보내준다. BehaviorSubject 초기값을 가지고 있어서 subscribe할 때 초기값을 보내준다. 그 후 추가로 생기는 subscribe은 가장 최근의 값을 초기값으로 보내준다. PublishSubject 초기값 없이 subscribe 후 값이 들어오면 그대로 보내준다. 추가로 생기는 subscribe도 같다. ReplaySubject 첫 번째 subscr..
프로토콜은 특정 기능 수행에 필수적인 요소를 정의한 청사진이다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다고 한다. 프로토콜에 필수 구현을 추가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장(extend)하는 것이 가능하다. 프로토콜 문법 (Protocol Syntax) protocol SomeProtocol { // protocol definition goes here } 프로토콜의 정의는 클래스, 구조체, 열거형 등과 유사하다. struct SomeStructure: FirstProtocol, AnotherProtocol { // structure definition goes here } 프로토콜을 따르는 타입을 정의하기 위해서는 타입 이름 뒤에 콜론(:)을 붙이고 따를 프로토콜 이름을 적는다..
- Total
- Today
- Yesterday
- Git
- Generic
- SwiftUI
- 카메라
- MVVM
- ObservedObject
- Protocol
- rxswift
- file private
- 의미있는이름
- CodingTest
- 곰튀김
- Custom
- kakao
- strcut
- Xcode
- docker
- onTapGesture
- Swift
- AWS Fargate
- frame과 bounds 차이
- navigation
- AWS
- Login
- IOS
- tabview
- OCR
- enumerations
- ChatGPT
- delegate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |