분류 전체보기 104

Error: "Swinject: Resolution failed. Expected registration"

Swinject: Resolution failed. Expected registration: { Service: RecentMessageListenerRepositoryProtocol, Factory: Resolver -> RecentMessageListenerRepositoryProtocol } Available registrations:-> 주어진 로그 메시지를 보면, Swinject가 RecentMessageListenerRepositoryProtocol에 대한 등록을 찾지 못해 해결할 수 없다는 것을 나타냅니다. 컨테이너에 등록된 의존성을 해결하지 못했을 때 발생합니다. 이런 경우, Swinject 컨테이너에 필요한 의존성 등록을 추가하거나 문제가 있는 의존성을 수정하여 해결할 수 있습니다. 현재..

iOS) UIVisualEffectBackdropView 제거

CustomAlert 작업 시 Background에 희미한 색상이 있어 View 디버깅을 해보니 UIVisualEffectBackdropView 타입의 View가 있었다.. 시뮬레이터 디버깅 해당 View 타입을 제거하는 코드는 self.view.subviews.first?.isHidden = true 추가로 색깔을 변경하고 싶을 때에는 self.view.subviews.first?.backgroundColor = .blue 로 변경할 수 있다. 참고 자료.. https://stackoverflow.com/questions/37293656/change-uialertcontroller-background-color

iOS/iOS 2023.07.17

What's New in Swift (2020)

Swift 5에 API 안정성이 도입되면서 Swift에 Binary Framework가 도입되었습니다. 이로 인해서 SwiftUI 같은 강력한 API가 등장했습니다. 또한 Swift Package Manager를 사용하여 접근할 수 있는 오픈 소스 API가 증가 되었고 도메인 문제를 해결하기 위한 Cross-Platform으로써 성장할 수 있습니다. 1. 런타임 성능 발전에 대해서 Swift 4이후 버전, vs Objective-C 버전 Swift 4.1은 코드 크기 최적화로 많은 부분을 제거할 수 있었는데 Swift 5.3에서는 Objective-C 버전 코드 크기의 1.5배 이하로 줄였습니다. SwiftUI에서는 앱의 코드 크기가 개선되었습니다. 2. Dirty 메모리 사용한 개선에 대해서 Binar..

iOS/WWDC 2023.06.30

Realm) Error - "Provided schema version 0 is less than last set version 1." 해결

발생 새로 앱을 실행시키거나 모델 업데이트 시 Realm version 에러가 발생했다. 이유 에러 발생 이유로는 schema version 설정 전에 Object에 접근해서 빌드 시 에러가 발생되었다. 해결 앱 실행 후 처음 접근 전에 Realm을 configuration을 하면 해결 되었다. 저는 RealmDB객체를 init에서 선언해주어 생성과 동시에 configuratuion 해주었다. let config = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { } }) Realm.Configuration.defaultConfiguration =..

SwiftUI) NavigationBar 뒤로가기 버튼 안보이게 하기

네비게이션링크로 이동 시 자동으로 이전 화면의 이름이나 "Back"버튼이 나온다. 아래 화면 처럼 적당한 이름이면 이러한 동작이 좋을 수도 있지만, 만약 Navigation Title이 길거나, 알아보기 힘들다면? 오히려 깔끔하지 않을 수 있다. 안보이게 하는 방법으로는 .toolbarRole(.editor) 로 Navigaion Title의 범위를 크게 지정해주어서 안나오게 만들 수 있다.

iOS/SwiftUI 2023.06.12

SwiftUI) List NavigationLink item ">" 숨기는 방법

StackOverFlow에서 찾은 방법.. -> 하지만 기본적으로 List 생성 시 ">" 아이콘이 나온다. 해결방법 ZStack을 사용해서 위에 뷰를 덮어씌어주는 느낌으로 해결 기존의 NavigationLink Label은 보이지 않도록 opacity(0.0)으로 설정 struct ContentView: View { var test = [1, 2, 3, 4, 5, 6] var body: some View { NavigationView { List(test, id: \.self.description, rowContent: { element in ZStack(alignment: .leading) { Text("\(element)") NavigationLink { Text("\(element)") } lab..

iOS/SwiftUI 2023.05.31

WWDC16) Understanding Swift Performance - 2

프로토콜 유형과 제네릭 코드 구현을 탐색 프로토콜 유형 변수가 저장되고 복사되며 메소드 디스패치가 작동하는 방식을 알아 볼 겁니다. 여기 Drawable 추상 기본 클래스 대신, draw 메소드를 선언하는 protocol drawable이 있습니다. 또한 값 타입인 구조체 Point와 Line이 프로토콜을 준수하고 있습니다. 이제 값타입도 다형성을 가지게 되었습니다. 우리는 drawable프로토콜 타입의 배열에 Point와 Line 타입의 값을 모두 저장할 수 잇습니다. 그러나 이전과 비교했을 때, 다른 점이 있습니다. 참고로 값 유형 구조체인 Line과 point구조체는 Kyle이 방금 보여준 V-Table 디스패치를 수행하는데 필요한 공통 상속 관계를 공유하지 않습니다. 그렇다면 이 메서드에 대한 디..

iOS/WWDC 2023.05.02

WWDC16) Understanding Swift Performance - 1

주제: 디자인 공간을 좁히고 작업에 적합한 올바른 도구를 선택하는 방법 Swift의 다른 추상화 메커니즘의 모델링 영향을 고려 값 또는 참조 세마틱스 중 어떤 것이 적합한지 이 추상화를 얼마나 동적으로 만들어야 할지 메모리 할당 빠른 Swift 코드를 작성하려면 우리는 활용하지 않는 동적성과 런타임에 대한 가격을 피해야 합니다. Swift는 자동으로 메모리를 할당하고 해제 합니다. 그 중 일부는 스택에 할당 됩니다. Stack 스택은 매우 간단한 데이터 구조 입니다. 스택의 끝에 push할 수 있고, 스택의 끝에서 pop할 수 있습니다. 스택은 항상 끝에서 추가 및 제거가 일어나기 떄문에 끝점을 가리키는 포인터만 유지하면 됩니다. 스택 포인터라고 불리는 스택의 끝점에 메모리를 할당 할 수 있음을 의미 합..

iOS/WWDC 2023.04.28

클로저 (Closures) - 클로저 표현

클로저 (Closure)는 코드블럭으로 C와 Objective-C의 블럭(blocks)과 다른 언어의 람다(lambdas)와 비슷 합니다. 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 이 캡쳐와 관련된 모든 메모리를 알아서 처리 합니다. 캡처의 개념에 대해 익숙하지 않다고 걱정하지 않으셔도 됩니다. 값 캡쳐는 아래에서 자세히 설명해 두었습니다. 전역 함수(global functions)와 중첩 함수(nested function)은 실제 클로저의 특별한 경우 입니다. 클로저는 다음 세 가지 형태 중 하나를 갖습니다. 전역 함수: 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수: 이름이 있고 관련된 함수로 부터 캡쳐할 수 있는 클로저 클로저 표현: 경량..

iOS/Swift 2023.04.25