분류 전체보기
-
swift 클로저 - 캡처리스트 (:클래스에서의 사용)Swift/swift 문법 2023. 9. 6. 00:01
클로저는 참조타입이다. 클로저 내부에서 외부의 값을 불러올 때 '캡쳐현상'이 발생한다. 이떄 클로저 안에서 이용되는 외부의 변수를 캡쳐리스트 안에 넣어줄 수 있다. 캡쳐 리스트를 써서 대상을 캡쳐할 수 있는데, 캡쳐한 대상의 타입에 따라 그 방법이 달라진다. 캡처된 대상 캡쳐리스트 유무 결과 구조체 캡처리스트를 쓰지 않은경우 외부 값이 변하면 같이 변한다 캡처리스트를 쓴 경우 외부 값이 변해도 변하지 않음 값 캡처리스트를 쓰지 않은경우 주소값 복사 캡처리스트를 쓴 경우 주소값 복사 (RC를 올려서 메모리에서 해제될 가능성을 방지) 이중 값 타입의 코드 예시 // 클래스의 캡처리스트 class SomeClass { var num = 1 deinit{ print("메모리에서 해제되었습니다.") } } var..
-
differences between @Binding and @ObservedObjectSwift/SwiftUI 2023. 8. 24. 00:34
In this example, we'll create a simple app with a counter. Tapping a button in the child view will increment the counter, and the updated counter value will be shown in both the parent and child views. import SwiftUI struct ContentView: View { @State private var counter: Int = 0 var body: some View { VStack { Text("Counter in Parent: \(counter)") ChildView(counter: $counter) } } } struct ChildVi..
-
VaporSwift 2023. 8. 7. 11:15
애플에서 제공하는 서버 프레임워크 리턴 값이 서버에 출력된다. import Vapor func routes(_ app: Application) throws { // http://127.0.0.1:8080 app.get { req async in "It works!" } // http://127.0.0.1:8080/hello app.get("hello") { req async -> String in "Hello, world!" } // http://127.0.0.1:8080/hello/vapor // app.on(.GET, "hello", "vapor") 으로 써도 된다 app.get("hello", "vapor") { req in return "Hello, vapor!" } // http://127.0...
-
XCTestSwift 2023. 8. 2. 10:45
테스트 코드를 위한 애플의 프레임워크 - Unit Test - UI Test - Performance Test tearDown() : 현재 테스트 환경을 정리한다. 테스트 중에 생성된 모든 리소스나 객체를 정리 하는 용도로 사용, 각 테스트가 격리되고 후속 테스트에 영향을 줄 수 있는 잔여 효과를 막기 위함 예시 코드 https://developer.apple.com/documentation/xctest XCTest | Apple Developer Documentation Create and run unit tests, performance tests, and UI tests for your Xcode project. developer.apple.com 애플 테스트 튜토리얼 https://develope..
-
sheet (Q)Swift/SwiftUI 2023. 8. 2. 01:12
Button("포켓몬 추가") { self.isPresented.toggle() }.sheet(isPresented: $isPresented) { //띄울 뷰 & 뷰에 전달할 바인딩 값 AddPocketmonView(pocketmonStore: pocketmonStore, isShowingAddSheet: $isShowingAddSheet) } sheet(isPresented:onDismiss:content:) Presents a sheet / when a binding to a Boolean value that you provide is true. ⚠️ 오류: 바인딩 값 변수를 같게 (isPresented)로 통일한다. 예제 코드 struct ContentView: View { @State privat..
-
swiftUI의 특징 (선언적 구문, 데이터 주도)Swift/SwiftUI 2023. 7. 24. 09:36
- 선언적 구문 autolayout을 이용하여 사용자 인터페이스가 어떤 모양이어야 하는지 각각 잡아주지 않아도 된다. list,Hstack등을 명시하고 속성을 설정하기 위하여 수정자(modifier)를 사용한다. 이렇게 선언하고 나면 레이아웃의 위치와 컨스트레인트 그리고 렌더링 방법에 대한 모든 복잡한 세부사항은 swiftUI가 자동으로 처리한다. - 데이터 주도 앱 데이터와 앱의 사용자 인터페이스 및 로직 사이의 관계에 대해 데이터 주도적이다. swiftUI 이전에는 앱 내에 있는 데이터의 현재 값을 검사하려면 그에 대한 코드를 앱에 포함해야 한다. -> UIKit은 새로고침을 눌러 주어야 한다. but, 데이터 주도적이면(swiftUI 는), 내용이 변경된다면 자동으로 감지할 수 있다. (: @Sta..