본문 바로가기
반응형

전체 글322

[SwiftUI] 자식에게 State 전달하기 https://developer.apple.com/documentation/swiftui/managing-user-interface-state Managing user interface state | Apple Developer Documentation Encapsulate view-specific data within your app’s view hierarchy to make your views reusable. developer.apple.com 1. Binding 키워드 먼저 자식View에다가 @Binding 이라는 프로퍼티 래퍼를 생성한다. 이 프로퍼티 래퍼는 부모의 스테이트를 받아오는 역할을 한다 struct PlayButton: View { @Binding var isPlaying: Bool.. 2024. 3. 21.
SwiftUI에서 {} 동작 원리 너무 궁금해서 찾아보았다.. 먼저 var body의 경우 아래와 같이 View라는 프로토콜에서 정의되어있고 computed property로 사용된다 그럼 VStack은 어떻게 동작하는가? https://stackoverflow.com/questions/66704988/returning-multiple-view-objects-from-a-closure-in-swift Returning multiple View objects from a closure in Swift I often see code like this: VStack { Text("A") Text("B") } From looking at the swift tutorials, I know that this is shorthand for speci.. 2024. 3. 20.
[Swift] Generic이란 1. Generic Function 아래와 같은 함수를 보자. 인트 변수를 두개바꿔주는 함수이다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 만약 정수형이 아니라 실수형을 바꿔주고 싶다면? 아래처럼 함수바디 구현체는 같은데 함수이름과 파라미터 자료형만 다른걸 세개나 정의해줘야 한다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = .. 2024. 3. 20.
[Swift] inout 파라미터 1. inout 파라미터란 스위프트는 기본적으로 함수 파라미터가 constant다. 함수 내에서 이 값을 바꾸려 하면 컴파일 에러가 난다. 그럼 스위프트에서 call by reference를 어떻게 하냐? inout 파라미터를 사용하면 가능하다. inout 파라미터는 함수를 호출할 때 &를 붙여주어야 한다. C언어처럼 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is no.. 2024. 3. 20.
[Swift] Protocol 배우기 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/protocols/ Documentation docs.swift.org 1. 프로토콜이란? 그냥 다른언어 인터페이스랑 똑같다고 생각하면 된다. 그런데 Swift 이놈은 용어가 너무 다르다. 생긴건 아래와 같다 protocol SomeProtocol { var mustBeSettable: Int { get set } var doesNotNeedToBeSettable: Int { get } } protocol AnotherProtocol { static var someTypeProperty: Int { get set } } 프로토콜 안에있는 변수들은 Property R.. 2024. 3. 19.
iOS 디벨로퍼 계정없이 무료 빌드하는법 뭔가 정책이 풀린건지 이제 개발자 계정 없이 앱빌드가 가능해진것 같다. 이전에도 가능했으나 앱이 1주일후면 블락처리되고 그랬는데... 그래 애플씨. 좀 유하게 삽시다. 치사하게 굴지 말고 요약하면 다음과 같다 1. 먼저 디벨로퍼 사이트에 내 애플계정을 가입한다. 돈은 내지 말자 2. 디벨로퍼 사이트에 가입하면, 사이닝 페이지에 내 이름이 personel team으로 등록이 된다 3. 이를 이용하면 디버그용에 한해서 무료 빌드가 가능하다. 4. 앱을 빌드하고 디바이스에 올리면 신뢰할 수 없는 개발자라고 나온다. 5. 설정에 가서 안드로이드처럼 개발자 신뢰함을 설정하면 개발이 가능하다 2024. 3. 19.
CustomPainter를 redraw 하는 방법 https://api.flutter.dev/flutter/rendering/CustomPainter-class.html CustomPainter class - rendering library - Dart API The interface used by CustomPaint (in the widgets library) and RenderCustomPaint (in the rendering library). To implement a custom painter, either subclass or implement this interface to define your custom paint delegate. CustomPainter subclasses must impl api.flutter.dev 공식문서에서는.. 2024. 3. 15.
덩치가 커진 위젯의 rebuild 플러터를 하다보면 하나의 위젯이 덩치가 어마어마하게 커지는 경우가 있다. 이때 setState를 하면 어마어마한 퍼포먼스 문제를 야기한다. 헌데 위젯을 하나하나 따로 빼서 끊어주고 생성자 뚫고 해주는게 여간 쉬운일이 아니다. 이럴 때 사용하는 팁을 적어본다 1. 프로파이더 사용 너무나 당연한 얘기이지만 프로바이더를 사용하면 커다란 빌드 함수 안에서 특정 위젯만 리빌드 할 수 있다. 다만 코드 작성하기가 여간 귀찮다 2. 스트림 컨트롤러와 스트림 빌더 사용 가장 쉬운 방법이다. 특정부분만 리빌드 하고 싶은 부분을 스트림 빌더로 감싸준다. 그리고 스트림컨트롤러르 생성한 뒤 스트림을 스트림빌더에만 내려준다. 즉 특정부분만 setState 하는 효과를 가지게 된다. 3. ChangeNotifier와 Listen.. 2024. 3. 8.
iOS에서 로그 볼때 OR, NOT 필터 거는법 XCode에서 로그를 볼 때 안드로이드와 다르게 iOS에서는 필터를 걸면 죄다 and이거나 죄다 OR로 설정할 수 있다. Match any conditions로 설정하면 로그필터 조건들이 죄다 OR로 설정된다 Match all conditions 로 설정하면 로그필터들이 죄다 and로 설정된다 이건 좀 짜증나네.. 반면 Device and Simulator에 들어가서 로그를 보면 서로다른 항목에 대해서는 AND로 동작하고, 같은 항목에 대해서는 or로 동작한다 가령 PROCESS Runner MESSAGE msg1 MESSAGE msg2 라고 하면 프로세스가 Runner이고 메세지가 msg1 msg2 이거 둘중 하나를 포함하는걸 필터링 하라 이다 2. Not 필터 거는법 Xcode에서 필터 설정후 옆에 .. 2024. 2. 8.
반응형