Swift
-
Ribs 에 대해서...Swift/아키텍쳐 2021. 9. 30. 15:32
Ribs Uber 에서 만든 아키텍쳐 패턴으로, MVC (Massive ViewController 라고 하는...ㅠ) 패턴에 한계 에서 VIPER 패턴을 바탕으로 만든 패턴입니다. 깃헙 : https://github.com/uber/RIBs 짧게 우버에서 얘기하는 시작의 이유는 아래와 같습니다. 1. 신뢰성 최소한의 장애를 위해 핵심 코드에 대한 엄격한 검토 프로세스, 그 외는 핵심 비즈니스를 중단하지 않는지 확인하고 이러한 코드 분리로 새로운 기능을 시험하고 제대로 작동하는지 테스트한다. 2. iOS와 Android 가 통합된 기반에서 작업할 수 있는 호환성 동일한 패턴으로 더 쉽게 협업하고 동시에 작업할 수 있도록 작업. 아래가 두 플랫폼이 공유하는 내용입니다. Core architecture Cla..
-
Computed Property + Access ControlSwift 2021. 9. 30. 14:22
이전에 DTO, VO 관련 글을 작성하면서, Property 개념과 비슷한 부분이잖아? 했던 Property에 대해서 조금 더 자세히 적어보고자 한다. (https://kkimin.tistory.com/16) 연산 프로퍼티? 무슨말일까요 아주 쉽게 아래의 코드를 말합니다. import Foundation class Test { private var temp: Int = 0 var result: Int { get { return temp } set { temp = newValue + 100 } } } var a = Test() a.result = 12 자 우선, 왜 저렇게 접근할까요? 정답1 : 정말 연산이 필요할때 / 정답2 : 연산 없이 value를 직접 꺼내지 않고 간접적으로 접근하는 측면을 위해 (..
-
Builder - dynamicMemberLookup (+ KeyPath)Swift 2021. 9. 30. 13:22
https://kkimin.tistory.com/78 dynamicMemberLookup (+ KeyPath) Swift 4.2의 변경사항 Dictionary 형태의 값을 subscript(dynamicMember:)를 사용해서 값을 마치 property처럼 사용이 가능하도록 하는것으로 이해했다. 아래의 예제가 도움이 될것이다! (참고는 https://github.c.. kkimin.tistory.com 이 글을 작성하면서 공부한 내용은 Builder Pattern 를 사용하면서 활용할 수 있었다. 해당 방법은 생성자 대신 빌더를 활용해 사용이 쉽고 가독성이 좋은 코드를 얻고 싶을때 사용할 수 있다! 아래 예제 코드를 보면 바로 이해가 될것같다. import Foundation @dynamicMember..
-
dynamicMemberLookup (+ KeyPath)Swift 2021. 9. 23. 17:03
Swift 4.2의 변경사항 Dictionary 형태의 값을 subscript(dynamicMember:)를 사용해서 값을 마치 property처럼 사용이 가능하도록 하는것으로 이해했다. 아래의 예제가 도움이 될것이다! (참고는 https://github.com/apple/swift-evolution/blob/master/proposals/0252-keypath-dynamic-member-lookup.md) @dynamicMemberLookup struct Person { subscript(dynamicMember member: String) -> String { switch member { case "age": return "20" case "name": return "hello" default: re..
-
ios 웹뷰와 통신 (Native <-> JavaScript 통신)Swift 2021. 7. 21. 18:24
WKWebView https://developer.apple.com/documentation/webkit/wkwebview Apple Developer Documentation developer.apple.com WKWebView before IOS 11.0 (NSCoding support was broken in previous versions) 이 오류는 stackoverflow에서 찾아보니 iOS 11 이전 버전인 경우 storyboard에서 WebKit View를 사용못하는거 같습니다. 아래처럼 코드로 작성해주면 된다. override func loadView() { let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame..
-
CombineSwift 2021. 7. 20. 18:22
WWDC 2019에서 발표했던 Combine 최소버전이 ios 13 이기때문에 아직 바로 사용할 순 없지만, 무엇인지 알아보자. Combine이란? https://developer.apple.com/documentation/combine Combine은 비동기적인 이벤트 event-processing연산자를 조합함으로써 사용자 정의할 수 있는 프레임워크이다. 시간에 따라 값을 처리하기 위한 선언적(declarative) API이다. 발생한 이벤트를 어떻게 가공하고, 소비할지에 초점을 맞춘다. Publisher프로토콜은 시간이 지남에 따라 값의 시퀀스를 제공 할 수있는 유형을 선언합니다. Publishers 업스트림 게시자로부터 받은 값에 대해 조치를 취하고 이를 다시 게시하는 연산자(operattors)..
-
Swift SwizzlingSwift 2021. 7. 16. 17:35
ios Developer 오픈 채팅방에서 Swizzling에 대한 내용이 나와, 프로젝트에 살짝 도입해본적이 있는 해당 내용을 적어보도록 하겠다. Method Swizzling : 런타임에 정적으로 메소드를 호출할때 중간에 가로채서 커스텀 한 뒤 호출할 수 있게 한다. 쓰는 경우? - 앱에 분석 기능을 통합할때(? 우리 앱에 GA(Google Analytics)를 붙인다고 할때, 화면을 시작하는 viewWillAppear 메소드 안에 GA API를 호출한다. 수백개의 viewController에 직접 넣을 수 없으니 method 를 커스텀 하겠다는 것이다. - 로그를 넣거나, 급하게 UILabel에 어떤 값을 공통으로 해야된다던지 등등,,, - 무언가 동일한 동작 사용방법 아래는 viewWillDisap..
-
Swift Async / AwaitSwift 2021. 7. 9. 10:39
WWDC21에 나온 Swift 5.5 Async Await 내용! WWDC21 영상 https://developer.apple.com/videos/play/wwdc2021/10132/ 이얏호! 이제 Swift는 일반적으로 async/await로 알려진 패턴인 비동기 함수를 지원합니다. 새로운 구문으로 코드를 더 쉽게 읽고 이해할 수있는 방법을 알아보십시오. 함수가 일시 중단되면 어떻게 되는지 알아보고 기존 완료 핸들러를 비동기식 함수에 적용하는 방법을 알아 볼 수 있는 wwdc 영상이다! 사실 기존에 비동기 처리에대해서 안드로이드와 이야기 하다가, 코루틴(coroutine) 같은거 없냐는 질문을 받은 적이 있는데 굉장히 유사하게 이제 Swift5.5 부터 가능해진 셈이다! 아래 우리가 흔히 사용하는 통신..