본문 바로가기

전체 글173

[자료구조] 자료구조 필기 및 코드 (01-07) 2024. 1. 29.
ObservableObject , @ObservedObject, @StateObject [참고]더보기https://ios-development.tistory.com/1160 [iOS - SwiftUI] @ObservedObject, @StateObject 개념, 차이점, 사용 방법 (MVVM 패턴)목차) SwiftUI의 기본 - 목차 링크 * @Published, @objecervableObject 개념은 Combine이므로, Combine 관련 이전 포스팅 글 참고 @ObservedObejct 란? observable 객체를 구독하는 property wrapper observable 객체가 변경되면 뷰ios-development.tistory.comhttps://www.avanderlee.com/swiftui/stateobject-observedobject-differences/ @Sta.. 2024. 1. 21.
[버닝버디] 링차트 기능 개발 현재 유지보수 중인 버닝버디 앱의 추가 기능을 개발해야 한다. [해야 할 일] 1인 기능 개발 (1월 20일 ~ ASAP) 이슈 생성 컨벤션 확인 린트 다운받기 린트에 맞게 코드 수정 추가 뷰 그리기 (차트) background, foreground일때 헬스 데이터 관리 피그마의 새로바뀐 로직에 맞게 1인 기능 잘 작동하게 바꾸기 [차트 기능 구현] 새로 업데이트된 차트에는 차트 1개짜리 있어서 쉽게 구현 가능할듯 -> 버닝버디의 앱은 iOS+17부터 있는 차트 기능을 사용하면 좋을듯 -> 앱의 생애주기 업데이트에 따라, 핼스 데이터를 실시간으로 받아오기 혹은 잠깐 멈춰있다가 앱이 켜지면 업데이트해줄지 중요 (생애주기가 업데이트가 가장 관권!), 앱 꺼졌을때, 켜졌을때 운동 데이터 관리해줘야 함! for.. 2024. 1. 21.
[최적화] downsampling 화면에 많은 이미지들을 보여주게 되면, 메모리가 기하급수적으로 증가한다. 메모리 사용량은 이미지의 파일 크기로 계산되는 것이 아니라, 이미지의 크기(해상도)로 메모리가 계산된다. 메모리 사용량 = 해상도 (가로 pixel * 세로 pixel) * 4byte per pixelMemory Usage (Bytes) = Width(pixel) × Height(pixel) × bytes per pixel 로드압축된 JPEG 파일을 메모리에 불러온다디코딩이미지 파일을 실제 픽셀 데이터로 변환하는 과정JPEG파일을 로드 후, GPU에서 읽을 수 있게 디코딩 작업 실행데이터의 압축을 해제하여 이미지로 표현 -> 많은 메모리 공간 필요 data buffer -> 디코딩 -> image buffer 변환렌더링준비된 파일.. 2024. 1. 13.
[iOS] NearbyInteraction란? WWDC20에서 공개한 신기술Apple의 U1 칩 → 고주파수 기능을 사용해 디바이스 위치 인식. 블루투스보다 훨씬 더 정확한 위치 제공더보기referenceNearby Interaction | Apple Developer Documentation Nearby Interaction | Apple Developer DocumentationLocate and interact with nearby devices using identifiers, distance, and direction.developer.apple.comApple U1 chip explained: What is it and what can it do? Apple U1 chip explained: What is it and what can it.. 2024. 1. 13.
[iOS] NearbyInteraction - NISession이 .finding에서 .found로 넘어가지 않는 문제 해결 문제 상황 NISession이 .finding에서 .found로 상태 변경이 되지 않았습니다. NISessionManager 파일을 NISession을 수정 전으로 되돌려보니 잘 넘어간다. 뭐가 문제였을까? 해결 방법 문제 상황이 일어나는 NISessionManager 코드를 뜯어보았습니다. 이전에 NISessionManager를 수정하는 과정에서, iOS 12.0에서는 지원하지 않는다. 대신에 다른 함수를 써라. 는 경고사항을 마주한 적이 있는데 여기서 코드를 unarchivedObject 로 변경하였습니다. // 변경 전 func dataReceivedHandler(data: Data, peer: MCPeerID) { guard let receivedData = try? NSKeyedUnarchive.. 2024. 1. 13.
[iOS] 샌드박스란? 샌드박스는 앱의 실행 환경을 시스템의 다른 부분과 격리시키는 보안 기술이다.App Sandbox란?App Sandbox는 iOS의 보안 기술로, 앱을 시스템의 다른 부분과 격리된 환경에서 실행하도록 하는 메커니즘이다. 이를 통해 앱이 악성 코드에 의해 손상되더라도 시스템 전체에 미치는 피해를 최소화할 수 있다.App Sandbox는 iOS와 macOS에서 사용하는 앱 격리 보안 기술이다.각 앱은 샌드박스라는 독립된 환경에서 실행되며, 시스템과 다른 앱, 사용자 데이터로부터 격리된다.즉, 하나의 앱이 악성 코드에 감염되거나 오작동하더라도 시스템 전체나 다른 앱에 피해를 주지 못하도록 설계되어 있다.앱을 작은 모래상자(Sandbox) 안에 가둬놓고, 밖과 철저히 분리해 놓는 것”이라고 이해하면 쉽다. 공식 .. 2024. 1. 13.
[macOS] SandBox 환경에서 개발 불가능한 상황 발생 샌드박스란?https://bokoo.tistory.com/entry/macOS-%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4%EB%9E%80 [macOS] 샌드박스란?App Sandbox란? 앱이 손상된 경우 손상을 방지하기 위해 macOS 앱의 시스템 리소스 및 사용자 데이터에 대한 액세스를 제한합니다. 앱 샌드박스는 권한을 통해 요청된 리소스에 대한 앱의 액세스를bokoo.tistory.com-600에러와 샌드박스상황샌드박스 환경의 Xcode에서 AppleScript를 실행하여 다른 앱(예: Numbers)을 동작시키면 -600에러가 발생한다.에러 내용AppleScript 실행 오류: { NSAppleScriptErrorAppName = Numbers; NSAppleSc.. 2024. 1. 13.
[macOS] NSImage가 메모리에서 해제되지 않는 오류 해결 메모리 누수 프로파일링을 통해 메모리 누수 발생 확인 1. 메모리 누수 상황 1 - NSImage메모리 해제 안됨 원인 파악 프로파일링 결과, 앱의 한 사이클을 모두 돈 후, SelectFileView로 되돌아왔을때 VM에서 NSImage를 저장하는 메모리를 해제시켜주지 못하고 있음 똑같은 이슈: https://stackoverflow.com/questions/17666679/uiimageview-not-releasing-memory-according-to-vm-tracker-low-memory-warnings 참고 Allocation, Leak, VM Tracker 분석 결과 Allocation: 앱의 한 사이클을 다 돌고 난 후에도 CGImage가 VM영역에서 해지되지 못함 Leak: 여러가지 원인으.. 2024. 1. 13.
[macOS] 이미지가 많은 뷰 성능 최적화 - LazyVGrid macOS앱 개발을 하며, 뷰에 이미지를 굉장히 많이 로드해야 하는 상황이 발생했습니다. 앱의 특성상, 저장된 이미지는 무조건 고화질로 NSImage변수에 저장되어있어야 하며, 모든 이미지들의 위치값을 갖고 있어야 하는 상황입니다. 뷰에 수백개의 이미지들을 ScrollView에 넣고, 이미지들을 드래그하는 기능을 구현했습니다. 문제는 모든 이미지들의 위치값을 갖고 있어야 하며, 이 위치값을 통해 드래그 기능을 구현하는 방식으로 개발을 진행하는 과정에서 뷰가 너무 많은 이미지를 한꺼번에 로드하는 바람에 앱의 성능이 현저하게 떨어지는 경험을 했습니다. 최적화 전 - 한번에 모든 이미지를 불러와, 각 이미지들의 위치 값을 저장하는 방식 모든 이미지들의 위치값을 저장하기 위해 한번에 모든 이미지를 불러와, 각 .. 2024. 1. 13.
[macOS] 파일 선택 기능 - Drag & Drop, NSOpenPanel macOS에서 파일 업로드하는 기능을 개발하였습니다. File 업로드 기능 구현 방식 1) Drag & Drop 방식 2) NSOpenPanel 방식 1. Drag & Drop 방식 공식 문서 https://developer.apple.com/documentation/swiftui/drag-and-drop Drag and drop | Apple Developer Documentation Enable people to move or duplicate items by dragging them from one location to another. developer.apple.com onDrop 방식 예제 코드 struct ContentView: View { @State private var droppedIma.. 2024. 1. 12.
[프로그래머스/python/Lv2] k진수에서 소수 개수 구하기 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import math def decimalToK(num, k): # k진수로 변환 kNum = "" while num > 0: kNum = str(num%k) + kNum num = num//k return kNum def isPrimeNumber(num): if num < 2: # 2 이.. 2023. 12. 17.