분류 전체보기
-
Property WrapperSwift/SwiftUI 2023. 9. 28. 21:12
SwiftUI에서 Property Wrappers는 특별한 기능을 갖는 속성을 정의하는 데 사용됩니다. Property Wrappers를 사용하면 코드를 간결하고 읽기 쉽게 만들 수 있습니다. @State: SwiftUI 뷰의 상태를 저장하는 데 사용되며, 값을 변경할 때마다 뷰가 다시 렌더링됩니다. 보통 UI 컴포넌트의 상태를 저장하는 데 사용됩니다. @Binding: 부모 뷰에서 자식 뷰로 값을 전달하고, 자식 뷰에서 부모 뷰로 값을 다시 전달하는 데 사용됩니다. 부모 뷰의 속성을 자식 뷰에서 변경하는 데 유용합니다. @ObservedObject: 외부에서 제공되는 ObservableObject 프로토콜을 준수하는 객체의 상태를 저장하는 데 사용됩니다. 뷰에서 @ObservedObject 속성을 참조..
-
네이버 지도 이용시 멀티스레딩Swift 2023. 9. 24. 23:25
DispatchQueue.global(qos: .default).async { // 백그라운드 스레드 var markers = [NMFMarker]() for index in 1...1000 { let marker = NMFMarker(position: ...) marker.iconImage = ... marker.captionText = ... markers.append(marker) } DispatchQueue.main.async { [weak self] in // 메인 스레드 for marker in markers { marker.mapView = self?.mapView } } } 오버레이의 속성은 스레드 안전성이 보장되지 않으므로 여러 스레드에서 동시에 접근해서는 안됩니다. 특히 지도에 추가된 ..
-
의존성 주입Swift 2023. 9. 24. 15:22
의존성 주입(Dependency Injection) 객체의 생성과 사용 관심사를 분리하는 프로그래밍 설계 방식입니다. 클래스간 의존성을 클래스 외부에서 주입하는 것을 뜻하며, 일반적으로 우리가 사용하는 의존성 주입은 클래스에 대한 의존성의 인터페이스화를 통한 코드 유연성 증대 + 클래스간 의존성을 외부에서 주입하는 것을 뜻합니다. public class Dependency { public func doSomething() { print("Dependency doing something") } } public class MyClass { public func doSomething() { let dependency = Dependency() dependency.doSomething() } } MyClass는..
-
scene, AppDelegate (iOS13 이후 도입)Swift/UIKit 2023. 9. 17. 17:49
scene 객체는 iOS 앱의 사용자 인터페이스 및 콘텐츠를 표시하는 데 사용되는 독립적인 화면. 각각의 scene은 앱이 실행 중에 생성되고 관리될 수 있는 독립적인 인스턴스 iOS 13부터 UIScene 프레임워크가 도입되었으며, 이를 통해 멀티태스킹과 다중 창 지원 등의 기능을 구현할 수 있게 되었습니다. 이전에는 하나의 UIWindow만 있어서 한 번에 하나의 화면만 보여줄 수 있었지만, UIScene을 사용하면 여러 개의 UIWindow와 해당하는 scene들을 생성하여 복수 개의 화면을 관리할 수 있습니다. Scene 객체 멀티태스킹: 각각의 scene은 앱이 백그라운드에서 실행 중일 때도 동작하고, 복수 개의 scene이 함께 실행될 수 있습니다. 예를 들어, 메시지 앱에서 새로운 메시지가 ..
-
코디네이터 패턴 (feat. 진입점: SceneDelegate에서 관리)Swift 2023. 9. 17. 17:38
스위프트에서 코디네이터(Coordinator)는 앱의 네비게이션 흐름을 관리하고, 뷰 컨트롤러 간의 전환을 조정하는 디자인 패턴입니다. 코디네이터는 MVC(Model-View-Controller) 아키텍처를 보완하고, 뷰 컨트롤러의 역할을 단순화시켜 응용 프로그램의 유지보수성과 테스트 용이성을 향상시킵니다. 코디네이터 패턴은 일반적으로 앱 내에서 여러 화면 간의 전환과 네비게이션 로직을 처리하는데 사용됩니다. 주요 목적: 뷰 컨트롤러가 다른 뷰 컨트롤러로 직접적인 전환을 처리하지 않도록 분리하는 것 이렇게 하면 각각의 뷰 컨트롤러는 자신에게 주어진 역할에만 집중, 코드 재사용성과 유연성도 향상됨 코디네이터 패턴 작동 구조: 1. 코디네이터 클래스 생성: `Coordinator`라는 이름의 클래스를 만듭니..
-
Thread 1: "Unable to activate constraint with anchors <NSLayoutYAxisAnchor:\"UIButton:.top\"> and <NSLayoutYAxisAnchor:\"UIView:.top\"> because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchi..기록 2023. 9. 17. 15:19
뷰 올리려고 하는데 같은 계층에 있나요? view.addSubview()메서드로 요소 올렸는지 확인