일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- viewlifecycle
- error
- SWIFTUI
- apns
- protocol
- PushNotification
- Git
- array
- uikit
- ScrollView
- singleton
- IOS
- mvvm
- 화면전환
- list
- Switch
- self
- http
- NotificationCenter
- calendar
- Animation
- 고차함수
- class
- escaping
- struct
- SWIFT
- Refresh
- 글또
- Observer
- segue
- Today
- Total
목록SWIFT (65)
seong_hye, the developer
📘DispatchGroupGCD(Grand Central Dispath)의 기능 중 하나로, 여러 비동기 작업들을 그룹으로 묶어서전부 끝났을 떄를 감지하거나 동기적으로 기다렸다가 다음 코드르 실행할 때 사용 🔹기능- 여러 개의 비동기 작업(큐에 올라가는 블록)을 그룹핑- 모든 작업이 끝났ㅇ르 떄 알림(Notify)를 받거라, 동시 대기(Wait) 가능- 네트워크 요청, 파일 I/O, 연산 등 여러 작업을 동시에 처리하고 결과를 합쳐야 할 때 유용 🔹주요 메서드enter() / leave()그룹에 "작업 시작" 알림 ~> enter()그룹에 "작업 끝남" 알림 ~> leave()짝이 맞아야 함 (enter 호출 횟수 == leave 호출 횟수) gruop.notify(queue:closure)그룹 안..

페이지를 넘길 때 종이가 말려서 넘어가는 듯한 느낌을 주고 싶을 때 사용하는 기능에 대해 알아보자책을 넘기는 듯한 Page Curl은 SwiftUI에서는 기본 기능이 없어 UIPageViewController를 래핑해 사용함 📘UIPageViewControllerUIKit의 컨테이너 뷰 컨트롤러여러 페이지를 관리하고 스와이프 제스처나 애니메이션을 통해 페이지 간 전환을 제공⚠️ Page Curl은 iPhone에서 제약이 존재(스택 구조 / 회전 등), 최신 iOS UI 가이드에선 스크롤형을 더 권장🔹 생성 방법let pageVC = UIPageViewController( transitionStyle: .scroll, navigationOrientation: .horizontal, optio..
📘 .DS_Store맥을 사용하다보면 흔히 보이는 숨김 파일로Git 같은 버전 관리 시스템을 쓸 때 자주 문제 되는 부분 🔹 DS_Store 란?Desktop Services Store의 줄임말macOS Finder(파인더)가 폴더별 보기 옵션과 메타데이터를 저장하는 파일각 폴더마다 자동으로 생성됨숨김 파일이지만, Git이나 압축해서 공유할 때 다른 사람에게 보일 수 있음🔹 DS_Store에 포함되는 정보아이콘 위치 (폴더 안에서 아이콘을 마음대로 배치했을 때)썸네일 / 미리보기 캐시폴더 뷰 모드 (리스트 / 아이콘 / 걸러리 등)컬럼 정렬 방식 (이름순, 날짜순, 크기순 등) 📌 즉, 시스템이 쓰는 파일이기에 앱/코드 실행에는 아무 영향이 없음 📌 🔹 개발할 때 문제가 되는 이유폴더를 열기만..

📘자동 업데이트새로운 버전이 있을 때 사용자에게 알리고 업데이트를 유도하는 기능에 대해 정리해보려 함 🔹기본 흐름1. 현재 앱 버전 확인Bundle.main.infoDictionary를 통해 현재 버전 추출 2. 서버 / API에서 최신 버전확인App Sotre API를 통해 버전 정보 확인 3. 버전 비교현재 사용자 어플 버전(1번 값)과 앱 스토어 버전(2번 값)을 비교 4. 사용자에게 업데이트 유도버전 비교(3번 값)가 다를 경우 앱스토어로 이동하도록 유도 🔹사용자가 사용중인 현재 버전 가져오기let current = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else { return } 🔹서버(App Store..

우선 왜 코드를 나눠서 설계하려고 할까?여러명이서 하나의 거대한 앱을 만들게 됨(수만줄의 코드)-> 기준이나 룰에 따라 나누지 않으면 보기 힘듦-> 유지보수가 편해야하기 때문에 코드를 계층으로 분리하려함아키텍처란?하나의 서비스가 어떻게 구성이 되며 어떻게 동작이 되는지 즉 서비스의 동작 원리를 나타내는 것 좋은 아키텍처의 특징들단단하고/안정적, 모듈화 가능(재사용), 확장 용이(향후 확장성)테스트 가능(UI와 비즈니스 로직에서 강력/안정적), Decoupling (느슨한 결합) 등.. 올바른 아키텍처 선택의 기준- 유지보수 용이해야 한다.- 명확한 분리 기준: 단일 책임 원칙- 테스트 가능: TDD(테스트 주도 개발) / 유닛테스트 가능해야 (더 안전한 코드 작성 가능) 완벽한 / 절대적인 아키텍처는..

📘 Calendar 날짜별 장식이 있는 일정관리를 표시하고, 단일 날짜 또는 여러 날짜를 사용자가 선택할 수 있도록 제공하는 기능캘린더 뷰를 사용하여 사용자가 커스터마이징한 추가 정보(ex_ 스케줄)가 있는 특정 날짜 표시또한 캘린더 뷰를 사용하여 하나의 특정 날짜, 여러 날짜 또는 날짜가 없는 날짜를 선택 가능 🔹Calendar란Foundation 프레임워크의 구조체달력 시스템에 따라 날짜를 계산하고 연도/월/일/요일 등 구성 요소 추출 및 연산을 도와줌 ✅ 날짜 더하기 / 빼기let today = Date()let calendar = Calendar.current// 5일 후let fiveDaysLater = calendar.date(byAdding: .day, value: 5, to: toda..

⚠️ Cannot use instance member ' ' within property initializer; property initializers run before 'self' is avaliable: Swift에서 self를 사용해야 하는 프로퍼티를 초기화 도중에 접근하려고 할 때 발생하는 오류🔍 발생한 경우배열을 let으로 생성 후 다른 배열의 값으로 넣어주려고 하다가 발생struct DataModel { let title: String let listData: [Int] let checkData: Bool}struct ContentView: View { var listData4: [1,2,3] var allList: DataModel = DataModel(title: "Va..