React-Native로 개발한 앱을 리팩토링하려합니다. 성능 비교를 위해서 리팩토링 이전에 측정해놓고 싶습니다. 웹의 경우 라이트하우스로 성능을 측정했다면 모바일앱은 어떤걸로 측정 해야하나요? 찾아보니까 Firebase Performance가 앱 성능 측정을 해주던데 표준이 되는 다른 측정 도구가 있나요? 아님 firebase를 활용해서 측정하면 될까요?
질문은 아니고 해결 방법 공유 드립니다. build_script_generate/bootstrap.dart:76:40: Error: Method not found: 'NullThrownError'. final error = e[0] as Object? ?? NullThrownError(); 위 에러가 발생하는 경우 https://pub.dev/ 에서 사용하는 라이브러리들을 검색해서 버전들을 최신으로 맞춰주시면 됩니다. 발생 원인은 NullThrownError 가 Dart 2.14 이후에 제거되었는데 예전 버전들에서 저 메서드를 사용하려고 하니 발생하는 것이 아닐까 싶습니다.
안녕하세요 좋은 강의 감사합니다! 강의를 모두 수강하고 궁금한 점이 있어서 질문글을 작성합니다. DiffableDataSource에 사용되는 Section과 Item의 경우 ViewController에 작성하는 것을 많이 봐왔는데 ViewController가 아닌 다른 swift 파일에 정의를 해도 흐름에는 문제가 없겠지요? 예를 들면 ViewModel 같은 곳에서 dataSource를 적용해서 View에 넘겨준다고 한다면 ViewModel에 작성하는게 가독성이 있는 것인지에 대해 궁금합니다. CellRegistration으로 셀을 등록하는 것과 register로 셀을 등록하는 것의 차이가 있을까요? 구글링을 해보니 collectionView를 xib파일이나 코드로 작성하는 경우에는 register로 셀을 등록한다고 하는데 제가 진행했던 프로젝트에서 코드베이스로 DiffableDataSource를 사용해서 collectionView의 셀을 등록할 때 CellRegistration으로 했어도 별 문제가 없었던 것이 기억이 나서 질문 드립니다. CompositionalLayout으로 Layout 그리실 때 HeightDemension의 경우 absolute로 하시던데 이건 케바케 일까요? absolute로 설정하게 될 경우 작은 사이즈의 디바이스에 대응하는 것이 어렵지 않을까 하는 생각이 들었습니다. 현업에서도 fractional 말고 absolute나 estimated로 그리는 경우가 어느 정도 있는지 알고 싶습니다. 제너릭한 Network 클래스를 작성하실 때 get 메소드에 대한 코드가 있는 이유는 사용하신 API에서 get 메소드만을 사용하기 때문이라고 생각하고 있습니다. 만약 post나 patch 같은 HTTP 메소드를 사용한다고 하면 각각에 대응하는 메소드를 만들어서 써야하는 것인지 궁금합니다. 제너릭하다고 하셔서 다양한 HTTP 메소드에 대응 할 수도 있다고 생각했는데 get 메소드에 대한 코드만 있어서 이 부분이 궁금했습니다. APIKEY와 같이 보안이 중요한 것들은 현업에서 어떤 식으로 관리하는지 궁금합니다. Info.plist에 두는 방법도 본 적이 있는 것 같은데 그외 현업에서 관리하는 방법을 알고 싶습니다. 쓰고보니 질문이 너무 많네요 ㅎㅎ;; 다음 강의도 현업의 노하우를 전수해주는 강의가 되었으면 합니다. 감사합니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요. 강사님 페이스북 sns 로그인 기능을 추가하여 앱 사용하고 있었습니다. 현재 안드로이드는 페이스북 로그인 사용 가능하도록, ios는 로그인 아이콘을 숨김 처리하여 사용 하지 못하게 막아 놓은 상태입니다. 이런 sns 로그인 기능의 경우 안드로이드, ios 동일하게 사용하도록 아이콘을 오픈해야하는지와 플랫폼 정책이 있는지 궁금합니다. 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 잘 따라가다가 '13. Firebase로 이메일 로그인 기능 구현' 강의 수강 중 pubspec.yaml 파일에 flutterfire_ui: ^0.4.3+20 을 추가 하니 The Android Gradle plugin supports only Kotlin Gradle plugin version 1.5.20 and higher. The following dependencies do not satisfy the required version: project ':sign_in_with_apple' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50 라고 오류가 떠서 못넘어가고 있습니다 ㅠㅠ 어떻게 해결해야할까요? 구글링도 해봤으나 적절한 답을 찾지 못했습니다ㅠㅠ
학습하면서 어려움이 있으면 DispatchQueue.global ().async { DispatchQueue.main.sync { Thread.sleep(forTimeInterval: 1) print("finish1") } } 위 코드의 굵은 코드들이 실행될때, 어떤 thread들이 실행되고 있는지 설명 부탁드리고 싶습니다. 이렇게 thread가 진행된다고 이해하면 맞나요?
CRM ios app을 제작하였습니다. swift 언어를 사용하였고, storyboard 방식으로 제작하였습니다. 플러그인으로 onesignal(푸시알림 서비스)를 붙였고, 현재 애플 공식 개발자 계정이 존재합니다. CRM을 App Store가 아닌, 직원들에게 직접 설치해주려고 합니다. 어떤 방법을 사용해야 하는지 질문드립니다. *참고: 스타트업이라, Enterprise용 계정이 아닌 일반 개발자 계정입니다. 즉 직접 설치 방법 중Enterprise 방식은 사용할 수 없습니다. **참고2: Xcode로 build하여 아이폰에 설치해봤는데요, 개발자 모드 없이는 실행이 안됩니다. (다른 분들에게 항상 개발자 모드를 켜놓으라 할 수는 없어서...) 그래서 Xcode 빌드 외에 방법을 찾고 있습니다...
앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
안녕하세요, uiview 관련 질문이 있는데요. library에서 uiview를 선택해서 autolayout에서 safe area 기준으로 위에서 100~200정도, 양쪽(좌우) 간격을 20, 20 이런식으로 맞춘 뒤, 가운데 정렬 (horizontally in container)을 한 뒤에 시뮬레이션을 돌려보면 uiview가 화면 상에 나타나지 않습니다. 아무 숫자나 입력을 시도해보았는데 우연찮게 잠깐 나타난 것을 보니 숨겨지거나 레이어 밑으로 들어갔다기보다는, 수치 설정이 잘못된 것 같은데요. 이 경우 어떻게 해결해야 할까요? 숫자 빙고 앱 만들 시에도 똑같이 한다고 한 것 같은데 비슷한 오류가 발생했었다가 운좋게 해결됐었거든요. 제가 놓치고 있는 부분이 있는 건지 궁금합니다. label이나 button은 이런 오류가 없는데 uiview만 계속 이 문제가 반복됩니다.
[Assert] UINavigationBar decoded as unlocked for UINavigationController, or navigationBar delegate set up incorrectly. Inconsistent configuration may cause problems. 위와 같은 에러가 발생하는데, 코드 문제는 아닌거 같고 Xcode문제 인 것 같습니다. 구글링을 해봐도 해결책을 찾지 못해 질문 남겨요 !! 아 그리고 혹시 SwiftUI 강의도 새로 찍으실 계획이신가요 ?
func asyncTiltShift(_ inputImage: UIImage?, runQueue: DispatchQueue, completionQueue: DispatchQueue, completion: @escaping (UIImage?, Error?) -> ()) { runQueue.async { var error: Error? error = .none let outputImage = tiltShift(image: inputImage) completionQueue.async { completion(outputImage, error) } } } runQueue는 이미 비동기로 돌아가고 있는데 굳이 completionQueue에서 다시 한번 더 비동기로 돌아가게 만드는 이유가 무엇인가요? 강의 너무 잘 듣고 있습니다 :)