- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 시각화
- Optional
- cocoapods
- r
- Request
- Linux
- HTTP
- ReLU
- swiftUI
- 티스토리챌린지
- MVC
- deeplearning
- scheduledTimer
- ios
- 오블완
- SWIFT
- SQL
- Python
- rest api
- Observable
- 연산자
- rxswift
- substr
- tapply
- sigmoid
- barplot
- 명령어
- 딥러닝
- struct
- decode
목록iOS (66)
iOS 개발 기록 블로그
Your certificate 'xxxxxxx.cer' is not valid, please check end date and renew it if necessary 인증서 또는 프로비저닝 프로파일이 만료되었을때 배포 또는 'fastlane fetch_cert' 할때 위와 같이 터미널에 에러 발생하는 경우가 있다. 이럴 경우에 아래와 같이 팀원 분들이 있다면 협의하여 기존에 인증서를 모두 제거(nuke)하고 다시 생성하는 과정을 거칩니다. fastlane match nuke developmentfastlane match nuke distribution 삭제할 인증서를 선택하라고 하는데 저는 그냥 모두 삭제하였습니다. 그리고 다시 인증서&프로파일을 생성합니다. fastlane match developmen..
현재 문제이미 PR(풀 리퀘스트)에 포함된 파일을 .gitignore에 추가해도 해당 파일은 Git의 추적 대상(tracked 상태)이기 때문에 PR에서 자동으로 제외되지 않습니다. 즉, .gitignore은 새로 추가되는 파일들에만 영향을 줍니다. 해결 방법 1. Git에서 해당 파일을 추적 대상에서 제거해야 합니다.git rm --cached path/to/your/file 2. gitignore에 그 파일 경로가 포함되어 있어야 합니다. (이미 하셨다면 생략 가능.) 3. 변경 사항 커밋git commit -m "Delete gitIgnore에 파일 추가, 추적 중인 파일 제거" 4. 기존 PR 브랜치에 푸시git push origin your-branch-name 그럼 PR에서 해당 파일은 삭..
@State, @ObservedObject, @EnvironmentObject 같은 속성 래퍼를 사용한 프로퍼티와일반 프로퍼티(let 또는 var)로 선언되어 사용하는 것들의 차이점은 무엇일까? 🔍 일반 프로퍼티로 선언해서 사용하는 예시public struct MyView: View { ... var someProperty: Bool public init(someProperty: Bool) { self.someProperty = someProperty }이 구조는 SwiftUI에서 뷰 초기화 시 외부에서 값을 전달받고 이후 변경되지 않을 값을 받을 때 사용하는 일반적인 패턴입니다. 💡 왜 @State나 @Binding이 아니라 var인가요? 요약 정리@State내부에서 변경할 로컬 상..
@EnvironmentObject, @ObservedObject, @StateObject는 모두 SwiftUI에서 상태를 공유하거나 관찰할 때 사용하는 **속성 래퍼(property wrapper)**입니다. 각각의 목적과 생성/소유 관계에 따라 다르게 사용되며, 아래와 같은 차이점이 있습니다. 🔹 1. @StateObject 뷰에서 직접 생성하고 소유하는 상태 객체 초기화도 뷰 내부에서 직접 해야 함 (= SomeObject() 형태).소유권(owner): 해당 뷰가 상태를 “소유”함.의도: 해당 뷰가 객체의 라이프사이클을 책임져야 할 때 사용.struct MyView: View { @StateObject var viewModel = MyViewModel() // 여기서 생성 var body:..

WKWebView, 왜 갑자기 메모리 릭이 생기지?WKWebView를 개발하면서 통칭 '브릿지'라고 하는 기능을 담당하는 WKScriptMessageHandler를 사용하여 브릿지를 네이티브에서 추가해주게 됩니다. WKWebView를 사용할 때 WKScriptMessageHandler를 사용해 JavaScript 브릿지를 연결하다 보면, 어느 순간 deinit이 호출되지 않고 VC가 메모리에 남아 있는 걸 발견하게 됩니다. contentController.add(self, name: "myBridge") 위처럼 추가해주고 저 같은 경우에 기존 방식으로 deinit 시점에 아래와 같이 수동으로 제거해주곤 합니다.webView.configuration.userContentController.removeAll..

최근에 Xcode를 사용하여 iOS 디바이스를 연결하고 빌드하려고 할 때, 아래와 같은 문제가 발생했습니다. 환경Xcode 버전: 16.2 (Xcodes 앱을 사용하여 설치)디바이스 OS 버전: iOS 14.6 문제디바이스를 케이블로 연결하고 빌드를 시도했으나, 아래와 같은 팝업 메시지가 나타나며 빌드가 실패했습니다. Could not locate device support filesYou may be able to resolve the issue by installing the latest version of Xcode from the Mac App Store or developer.apple.com. 원인이 오류는 Xcode에 연결된 디바이스의 OS 버전에 대한 지원 파일이 없을 때 발생합니다. 이는..

에러 로그*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Expected dequeued view to be returned to the collection view in preparation for display. When the collection view's data source is asked to provide a view for a given index path, ensure that a single view is dequeued and returned to the collection view. Avoid dequeuing views without a request from the..
에러 상황final class StepView: UIView { // MARK: - Properties private var isFitnessAuthorized: Bool // MARK: - Initializer override init(frame: CGRect) { super.init(frame: frame) self.setupView() self.bindView() self.isFitnessAuthorized = PermissionManager.getPedometerAuthStatus() } // MARK: - Setup View private func setupView() { ..
https://github.com/ReactorKit/ReactorKit/tree/master/Examples/Counter/Counter ReactorKit/Examples/Counter/Counter at master · ReactorKit/ReactorKitA library for reactive and unidirectional Swift applications - ReactorKit/ReactorKitgithub.comCounter 예제와 같이 봅니다. ReactorKit에서 @Pulse는 특정 상태 변화를 옵저빙(감지)하기 위해 사용되는 프로퍼티 래퍼입니다. @Pulse를 사용하면 특정 상태 값이 변경될 때만 옵저버가 트리거됩니다. 이는 주로 일회성 이벤트나 특정 상태 변화에 반응하는 경우에..
🧑💻 코드 import SwiftUI public struct SampleView: View { @State var title: String = "Hi, guys" @Environment(\\.presentationMode) var presentationMode: Binding public var body: some View { VStack { Text(title) .font(.system(size: 26, weight: .bold)) .foregroundColor(.black) .padding() NavigationLink { BaseWebView(url: "") } label: { Text("구글 웹사이트") .padding() } Spacer() } .navigationBarTitleDisplay..