일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- Git Tutorial
- 플랫디자인
- SWIFT
- 8 그리드 시스템
- 직장인인강
- 포인트
- 패스트캠퍼스후기
- coordinator pattern
- 직장인자기계발
- 뉴북
- iOS앱개발올인원패키지Online.
- viewDidLoad
- 디자인 트렌드
- ios
- viewDidAppear
- 코드리팩토링
- 뉴모피즘
- git
- 패캠챌린지
- commit messages
- 픽셀
- 입력 개수 제한
- commit message
- 스큐어모피즘
- git workflow
- Xcodebuild
- 머티리얼 디자인
- commit
- 패스트캠퍼스
- 아이폰
- Today
- Total
목록iOS (53)
왕논의 연구실
🌀 RunLoop와 예약된 작업 처리iOS 앱을 개발하다 보면 setNeedsLayout()이나 setNeedsDisplay() 같은 메서드를 쓰는데,이걸 호출해도 화면이 즉시 바뀌지 않는 경험을 한 번쯤 있습니다..이 글에서는 왜 즉시 반영되지 않고 '예약'만 되는지, 그리고 그걸 언제 처리하는지즉, RunLoop가 어떤 역할을 하는지를 정리해보겠습니다.📌 예약만 하고 바로 안 되는 이유?UIKit은 성능을 위해 UI 변경 작업을 즉시 처리하지 않고,한 번에 모아서 처리하는 구조를 사용합니다.이때 사용하는 시스템이 바로 RunLoop입니다.🔁 RunLoop란?RunLoop는 iOS 앱이 실행되는 동안 돌아가는 이벤트 처리 루프입니다.앱은 항상 RunLoop를 돌며 "터치, 타이머, 네트워크, UI..
🔍 두 방식의 차이 요약구분ViewModel을 ViewController에서 주입ViewModel을 View에서 직접 참조구조ViewController가 View와 ViewModel을 연결View가 ViewModel을 직접 소유장점역할 분리 명확, 테스트 용이코드가 간결하고 SwiftUI에 가까움단점코드가 장황해질 수 있음View가 똑똑해지고 재사용성 저하흔한 사례UIKit, 전통적 MVVMSwiftUI, 간단한 화면 구성아키텍처적 해석MVVM with Coordinator / Clean ArchitecturePassive MVVM or MVVM-ish🎯 각 방식의 코드 구조와 의미1. ViewModel을 ViewController에서 관리 (전통적 MVVM)class MyViewController:..
1. 왜 ‘소유권 (ownership)’이 필요할까?Swift 의 값 - 복사(copy) 기반 모델은 편리하지만, 고유-자원(파일 디스크립터, 락, GPU 버퍼 등)은 “한 번에 하나만” 소유되어야 안전합니다. 불필요한 ARC retain/release · 메모리 복사는 성능을 떨어뜨립니다.이를 해결하기 위해 Swift 5.9~5.10에서 “값의 소유권 을 코드에 표현” 하는 세 가지 키워드가 도입되었습니다.키워드의미대표 위치~Copyable (비복사/noncopyable)“이 값은 복사 불가, 이동-전용(move-only)”타입 선언borrowing“잠깐 빌려쓰기”∙읽기 전용, 끝나면 호출자 소유권 유지파라미터·메서드·클로저consuming“소유권을 넘겨받아 소비”∙끝나면 호출자에서 더 못 씀파라미..
📸 이미지는 같은데 용량이 왜 이렇게 다를까?“갤러리에선 3 MB인데 앱 메모리에서는 30 MB?!” 오늘 작업을 하면서 메모리를 너무 많이 차지하는 이슈를 처리하였습니다.이 작업이 처음에 어려웠던 게 논리상 문제가 없는데, 메모리가 너무 많이 사용되었습니다. 계속 메모리 상승하는 부분을 추적하다가 UIImage를 저장하거나 사용하는 곳에서 매우 큰 메모리 상승이 일어나는 것을 보고 찾아보았습니다. PNG·JPG 파일 크기와 UIImage가 차지하는 메모리의 비밀을 아주 쉽게 풀어봅니다.1. 파일 용량 ≠ 메모리 사용량상황내부 형식1 픽셀당 바이트1920×1080 이미지 예시디스크(저장소)PNG·JPG (압축)0.1 ~ 0.5 B (가변)약 1 ~ 3 MB메모리(램)RGBA (비압축)4 B1920×10..
UIView 기준함수호출 시점주로 하는 일비고init(frame:)코드로 View 생성 시View 초기 설정초기화init?(coder:)Storyboard, Xib 로드 시View 초기 설정초기화layoutSubviews()Frame 변경 시서브뷰 레이아웃 재배치AutoLayout 안 쓰거나 커스텀 레이아웃 할 때 주로 사용draw(_:)View 다시 그릴 때직접 그래픽 그리기CoreGraphics, 무거움 주의updateConstraints()constraints 업데이트 필요 시제약조건 동적 업데이트setNeedsUpdateConstraints() 호출 후 실행됨UIViewController 기준함수호출 시점주로 하는 일비고loadView()메모리에 View 로드 시View 직접 생성 (특수 케이스)..
CoreBluetoothBLE 통신을 iOS에서 다루는 방법✨ CoreBluetooth란 무엇인가?CoreBluetooth는 iOS, macOS, watchOS에서Bluetooth Low Energy (BLE) 통신을 지원하기 위한 애플 프레임워크입니다. BLE는 저전력 통신 기술로, 소형 디바이스(스마트워치, 피트니스 밴드, IoT 센서 등)와 데이터를 교환할 때 사용합니다.🛠 CoreBluetooth를 다루는 기본 구조CoreBluetooth는 2가지 큰 역할로 나뉩니다.역할클래스설명CentralCBCentralManager, CBPeripheral주변 BLE 기기 스캔 및 연결 (스마트폰처럼 동작)PeripheralCBPeripheralManager, CBMutableCharacteristic,..