Today I Learned
개발자로서 성장하는 하루하루를 기록하기위해 만든 공간입니다.
2단계를 통해 학습, 복습하고 있습니다 ✨ 1단계. GitHub에 메모 ✨ 2단계. 블로그에 정리해서 게시 ✨
446 TILs and counting...
👇 각 항목별 상세 콘텐츠로 이동하세요.
UIKit 펼쳐보기
🔄 UIKit 앱의 구조와 각종 이벤트 흐름
- UIKit - App Structure : UIApplication, AppDelegate, SceneDelegate 기반 앱 구조
- UIKit - Windows & Screens : UIWindow, UIScreen 구성
- UIKit - App Lifecycle : AppDelegate와 SceneDelegate의 이벤트
- UIKit - UIViewController Lifecycle : ViewController의 Life-cycle
- UIKit - UIView Drawing Cycle : UIView의 Drawing-Cycle
- UIKit - Responder Chain : UIResponder 처리 흐름, event 전달 체계
🧩 UI 구성 & View 설계
- UIKit - Views & Controls : UIView (Container / Content / Control / Text / Search)
- UIKit - View Controllers : UIViewController (Content / Container)
- UIKit - Appearance : 전역 스타일 커스터마이징
- UIKit - Animation : 애니메이션 처리
- UIKit - Navigation : 화면 전환 (Modal, Present/Push 흐름)
📐 레이아웃
- UIKit - Layout & Autolayout : 프레임, 오토레이아웃, 스택뷰
- UIKit - Storyboards : 스토리보드의 개념과 역할
- UIKit - Nib Files : XIB 파일과 커스텀 뷰 분리
🎯 이벤트 & 입력 처리
- UIKit - Gestures & Touches : 제스처 인식기, 터치 처리
- UIKit - Menus & Shortcuts : UIMenu, 키보드 단축키
- UIKit - Drag & Drop : 드래그 앤 드롭 API
- UIKit - Pointer & Pencil : 포인터, Apple Pencil 대응
- UIKit - Focus Navigation : 키보드 포커스 이동
- UIKit - Accessibility : VoiceOver, 접근성 대응 방법
🖼 그래픽, 그리기, 텍스트
- UIKit - Images & PDF : UIImage, PDF 렌더링
- UIKit - Drawing : CoreGraphics 기반 드로잉
- UIKit - Printing : 인쇄 기능 구성
- UIKit - Text & Fonts : UILabel, NSAttributedString
- UIKit - TextKit : 고급 텍스트 처리 시스템
- UIKit - Writing Tools : 필기 입력 도구
- UIKit - Handwriting Recognition : Apple Pencil 필기 인식
SwiftUI 펼쳐보기
📁 SwiftUI 앱의 구조와 각종 이벤트 흐름
- SwiftUI - App Structure : @main, App, Scene 구성과 앱 엔트리 포인트
- SwiftUI - Lifecycle : 앱 생명주기 관리 및 상태 전이 흐름
- SwiftUI - State Management : @State, @Binding, @ObservedObject, @EnvironmentObject
🧩 UI 구성 & View 설계
- SwiftUI - View Composition : View, ViewBuilder, 재사용 가능한 뷰 설계
- SwiftUI - Components : Text, Image, Button, List, VStack 등 기본 UI 요소
- SwiftUI - Modifiers : .padding(), .font(), .background() 등 스타일링 체계
- SwiftUI - Navigation : NavigationStack, NavigationLink, path 기반 탐색 구조
- SwiftUI - Modal & Presentation : sheet, fullScreenCover, popover 등 화면 전환
- SwiftUI - Animation : withAnimation, animation(), transition(), matchedGeometryEffect 등
🎯 이벤트 & 입력 처리
- SwiftUI - Gestures : TapGesture, LongPressGesture, DragGesture 등
- SwiftUI - Input Events : 키보드 입력, 포커스 상태 등 이벤트 대응
- SwiftUI - Clipboard : 클립보드 복사/붙여넣기 처리
- SwiftUI - Drag & Drop : 드래그 앤 드롭 구현 방법
- SwiftUI - Focus : 포커스 가능한 뷰 구성 및 이동 제어
- SwiftUI - System Events : 앱 상태 변경 등 시스템 이벤트 대응
🔗 프레임워크 상호 연동 (UIKit ↔ SwiftUI)
- SwiftUI - UIKit Integration : UIViewRepresentable, UIViewControllerRepresentable 활용
- UIKit - SwiftUI Integration : UIHostingController로 SwiftUI View 연결
🌐 네트워크 통신
- Networking-restful : RESTful API 통신
- JSON & Codable : Codable을 활용한 데이터 직렬화 / 역직렬화
- WebView 기반 앱 구현 : WKWebView 구성, JS 통신, 팝업 대응 등
- Socket Communication : WebSocket, Socket.IO 등 실시간 통신 방식
- Bluetooth / BLE : CoreBluetooth 기반 주변기기 연결 및 데이터 송수신
🎨 UI 스타일링 & 디자인 시스템
- Design System : 폰트, 색상, 간격 등 재사용 가능한 스타일 가이드 설계
- Dark Mode Support : 다크/라이트 모드 대응 전략 및 시스템 연동
- Theming : 사용자 정의 테마 적용 및 환경 연계 처리 (.environment, UIAppearance 등)
- Assets & Resources : 이미지, 색상, 앱 아이콘 등 xcassets 리소스 구성
- Localization : 다국어 지원을 위한 .strings 파일 구성 및 지역 대응 전략
🔌 내부 프레임워크 기능 활용
- Media & Camera : 이미지, 비디오, 카메라 활용
- Sharing & Files : 공유 기능, 파일 다운로드 처리
- Contacts & Location : 연락처, 위치 권한 및 연동
🔗 외부 프레임워크 서비스 연동
- Social Login : Kakao, Naver, Apple 로그인 연동
- Firebase Integration : 인증, 실시간 DB, Analytics 등 활용
- Analytics & Tracking : GA4, Adjust 등 연동
🧰 개발 보조 도구 및 구성 관리
- 3rd Party Libraries : CocoaPods, Swift Package Manager 관리
- Environment Configuration : .xcconfig, Scheme
- Debugging & Performance : 디버깅 도구 및 성능
- Launch Performance : 런치 타임 최적화 전략 (lazy load, 초기 렌더 경량화) 최적화
🛡 보안 및 데이터 저장 기술
- App Permissions : Info.plist 권한 설정, 마이크/카메라/위치 접근 처리
- Privacy Manifest : 2024년부터 도입된 Apple의 민감 정보 접근 명세
- Storage Options : Keychain, UserDefaults, CoreData
- Biometrics : Face ID / Touch ID 연동
🔔 푸시 알림 및 백그라운드 처리
- Push Notification : APNs 설정 및 메시지 처리
- Background Tasks : Background Fetch, Task 처리
🧪 앱 테스트 구성 요소
- Unit & UI Test : XCTest 기반 단위 및 UI 테스트
- Snapshot Testing : UI 정합성 확인을 위한 스냅샷 테스트
🏗 아키텍처 및 모듈 설계
- Model-View Patterns : MVC, MVP, MVVM
- Clean Architecture 계열 : VIPER, RIBs의 책임 기반 분리 설계
- Unidirectional Architecture : Redux 스타일, TCA, ReactorKit 등 단방향 데이터 흐름
- Modularization : 모듈 단위 분리 전략
🔀 동시성 처리
- Concurrency Overview : 비동기 및 동시성의 개념과 필요성
- GCD (Grand Central Dispatch) : DispatchQueue, QoS, main/asyncAfter 처리
- DispatchWorkItem : 작업 단위 생성 및 cancel, notify 등
- Operation & OperationQueue : 병렬 작업 구성 및 의존성 관리
- Swift Concurrency : async/await, Task, TaskGroup 기반의 구조화된 동시성
🚀 배포 및 운영 자동화 전략
- Build & Distribution : 앱 서명, 빌드, 스토어 배포
- Monitoring Tools : Firebase, Sentry 등 모니터링 연동
- App Store Submission : 리뷰 대응, 정책 이해
- CI/CD Pipeline : 자동화된 테스트 및 배포 흐름
🧯 운영 이슈 문제 해결
- Log Analysis : 로그 기반 이슈 추적 및 원인 분석
- Crash Handling : 크래시 수집 및 대응 전략
🧾 Sample App 모음
세부 Topic들이 입력되는곳
- Design Pattern - Command 패턴(작성예정)
- Design Pattern - Composite 패턴(작성예정)
- Design Pattern - Factory method 패턴(작성예정)
- Design Pattern - Mediator 패턴(작성예정)
- Design Pattern - Strategy 패턴(작성예정)
- [Apple Documentation Archive] Auto Layout Guide(작성중)
- [Apple Documentation Archive] Coordinate System : View의 좌표계(작성중)
- Integrity - App Attest (앱 증명)
- Integrity - KeyChain
- Integrity - Secure Enclave
- 소켓이란
- [StoryBoard] - Unknown class ViewControllerC in Interface Builder file
- Git Error - command line tools are already installed (사실 git 에러 아님)
- Git Error - RPC failed; curl 18 transfer closed with...
- GitLab Error - You won't be able to pull or push project code via SSH until ...
- SourceTree Error - 시도때도 없이 꺼지는 현상
- Terminal Error - xcrun: error: active developer path...
- Xcode Error - Presenting view controllers on detached view controllers is discouraged.
- Xcode Error - Build input file cannot be found:
- Xcode Error - The CFBundleShortVersionString of an app extension (‘1.0’) must match that of its containing parent app
- Xcode Error - Command PhaseScriptExecution failed with a nonzero exit code
- Xcode Error - Launching AppName is taking longer than expected
- Xcode Error - Unable to process request - PLA Update available
- Xcode Error - Unknown class @@ in Interface Builder file.
- Xcode Error - Assistant가 작동하지 않을때 체크해야할 것
- Xcode Error - Cannot be opened because it is in a future Xcode project file format.
- Xcode Error - iPhone is busy: Making Apple Watch ready for development
- Xcode Error - maximumViewportInset cannot be larger than frame
- Xcode Error - warning: libobjc.A.dylib is being read from process memory...
- Xcode Error - xcode-select: error: tool 'xcodebuild' requires Xcode
- sample App - 투두리스트
- sample App - 그림판앱
- Sample App : 설정앱 - SwiftUI
- Sample App : 설정앱 - UIKit(Code)
- Sample App : 네트워킹과정 앱 - SwiftUI [Data parse, URLSession, completion, Singleton, Error, Result, Generic]
- Block6 앱 만들기
- Swift에 대한 소개
- Swift문법 기초
- Swift - 변수와 상수
- Swift - 기본 타입
- Swift - 조건문과 반복문
- Swift - 함수
- Swift - 옵셔널
- Swift - 저장 프로퍼티와 연산 프로퍼티
- Swift - Getter와 Setter
- Swift - 프로퍼티 옵저버 (willSet, didSet)
- Swift - 접근 제어자 (private, internal, public 등)
- Swift - Class와 Struct
- Swift - Initialization에 대해 알아보기
- Playground에서 UIView를 그려보자
- Swift - Array 모아보기
- Swift_Sequence Protocol
- Attribute - @frozen
- Swift - Codable 다루기
- Do - Try - Catch
- Swift - Collection_Array : prefix()
안전한 사용
- random함수를 이용해 Random한 숫자 뽑아내기
- Swift - Subscript(작성중)
- 안전하게 배열에 접근하는 방법
- [Common Method] 로그 관련 함수
- # 여러개의 Action을 한번에 추가하기
- mutating 과 구조체
- 텍스트인코딩에 관하여
- 배열안에 담긴 url 유효성 검사
- 이미지의 형태
- Xcode 디버깅으로 변수변화 캐치하기
- Understanding Closures in Swift : 클로저 톺아보기
- enum 사용법
- 저장프로퍼티 - 프로퍼티(1)
- 연산프로퍼티 - 프로퍼티(2)
- 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5)
- 타입프로퍼티(static) - 프로퍼티(3)
- 타입메서드, 클래스메서드, 인스턴스 메서드
- 파일경로 String으로에서 확장자 추출하기
- 고차함수 - Higher Order Function : Map, Filter, Reduce, Sort, FlatMap
- Special Literal
- Splite과 Component
- Swift - 스위프트에서 사용하는 패턴들
- case let : for case let 익숙해지기
- Switch case let, If case let, guard case let
- Swift - Collection_Int : signum()
- Closure 톺아보기
- 1급 객체
- Swift - 키워드 defer
- Swift - 키워드 inout
- Swift - Mirror 사용하기
- Swift - Range 함수 사용하기
- Swift - 참조(Strong, weak, unowned)
- Array - 특정값이 동일하거나 포함한 경우 찾기 : firstIndex()
- Objc - Objc 프로젝트에서 Swift 라이브러리 사용하기
- ObjC - Control Flow : Switch문
- Objc - 라이브러리 : 직접 파일삽입된 라이브러리 제거작업
- ObjC - NSDictionary to NSString
- ObjC - 로그찍기
- Objc - c언어와 objective-c의 차이, 발전
- 2진법,10진법,16진법
- 트랜지스터의 원리
- Data Structure - 다양한 데이터 구조, iOS에서 사용하는 데이터 구조
- MVP: Minimum Viable Product
- 직렬화(Serialization)
- # 터미널 - 커스텀 함수 및 환경변수 설정하기
- Terminal 기초 사용법
- 여러가지 버전관리정책
- iOS의 Virtual Memory에 대하여
- Virtual Memory - Page File Swap
- Data Structure - Stack과 Queue
- Dynamic Programming (DP): 동적프로그래밍
- iOS와 HTTP/2에 대하여
- iOS에서 메모리구조 : Code / Data / Heap / Stack
- 애자일 방법론 이해하기
- 네트워킹 - 호스트파일이란, 내부망 설정하기
- OSI 7 Layer
- OSI 7 Layer - 1. Physical Layer(물리계층)
- OSI 7 Layer - 1.5 여러 컴퓨터간 통신
- OSI 7 Layer - 2. Data Link Layer(데이터 링크 계층)
- OSI 7 Layer - 3. Network Layer(네트워크 계층)
- 프로그래밍 패러다임 - Functional Programming(함수형 프로그래밍)
- Functional Programming - 모나드 이해하기
- 동기와 비동기
- 문제풀이 인사이트
- 복잡도 정리
- 필수 알고리즘 - 그리디 (Greedy)
- 구현 정리
- 그래프 정리 (stack, queue, 재귀, bfs, dfs)
- 기본 자료 구조 - 배열
- 기본 자료 구조 - 연결 리스트 (Linked List)
- 기본 자료 구조 - 스택 (Stack)
- 기본 자료 구조 - 큐 (Queue)
- 알고리즘이란
- 자료구조를 왜 공부해야하는지
- 알고리즘 - 선택정렬 : Selection Sort
- 알고리즘 - 버블정렬 : Bubble Sort(작성중)
- 알고리즘 템플릿
- 필수 알고리즘 - BFS: 너비 우선 탐색(Breath-first search)
- 필수 알고리즘 - 백트래킹
- 필수 알고리즘 - 시뮬레이션
- 필수 알고리즘 - 투 포인터
- 필수 알고리즘 - 이진탐색 (Binary Search)
- 필수 알고리즘 - DP (Dynamic programming)
- 필수 알고리즘 - MST (Minimum Spanning Tree)
- 필수 알고리즘 - 플로이드 (Floyd)
- 필수 알고리즘 - 다익스트라 (Dijkstra)
- CI/CD - GitHub Action 사용하기 : 초기 구현하기
- CI/CD - GitHub Action 사용하기2 : on 섹션 수정하기
- CI/CD - GitHub Action 사용하기3 : 실행할 스크립트 짜보기
- App Store Connect - 배포된 앱을 삭제하는 2가지 방법
- AppStore - 앱 생성하기
- AppStore - 수출 규정 준수 정보
- AppStore - 버전정보 수정하기
- AppStore - 긴급 심사 요청(Request Expedited Review)
- 앱심사 - 수출 규정 관련 문서가 누락됨(Missing Compliance) / 우회처리
- 리젝사유 - 2. Performance(성능)
- 리젝사유 - 4. Design(디자인)
- 리젝사유 - 5. Legal(법률)
- 테스트플라잇 - 외부 테스팅 (External Testing)
- 디자인패턴이란
- Cocoa Design Pattern - Delegate 델리게이트 패턴
- Cocoa Design Pattern - Observer 옵저버 패턴
- Cocoa Design Pattern - Singleton (싱글톤 패턴)
- 아키텍쳐패턴이란, 디자인패턴과 아키텍쳐의 차이
- MVC -> MVP -> MVVM : Caculator
- MVC -> MVP -> MVVM : ColorSelectApp
- MVC to MVVM : 01. UTC 오늘, 현재, 내일 시간보기
- MVC to MVVM : 02. TableVC 클릭시 텍스트 변경
- VC -> MVC : Custom UICollectionView
- Architecture - IOS MVC의 한계
- Architecture - MVC: 전통적인 MVC구조로 HTTP사용하기
- Architecture - 간단한 MVVM구조 예제
- 단방향 데이터 플로우(Unidirectial Data Flow, UDF)
- ReactorKit - 예제: CountApp
- Clean Architecture(클린 아키텍쳐)
- 데이터 바인딩이란
- Architecture - 비즈니스 로직이란
- 프로그래밍에서 동기 비동기 개념에 대한 이해
- 비동기처리가 필요한 이유
- 비동기(Async), 동시(Concurrent)의 개념
- GCD - OperationQueue를 이용한 비동기 작업
- GCD - performSelector를 이용한 비동기 작업
- 동시성 프로그래밍 : Concurrency 톺아보기
- GCD - DispatchGroup
- GCD - DispatchWorkItem
- Swift Concurrency - Async / Await / Task
- Date - Date로 두 개의 시간차 구하기
- 볼륨버튼 캐치하기
- External Link (외부링크) - 커스텀 앱스키마 만들기, 사용하기
- KVC와 KVO
- 로컬라이징
- AudioToolbox - 롱프레스와 햅틱진동 구현하기 (Feat.Long press)
- IOS에 있어서 Caching
- Xcode - 빌드된 app파일은 어디에 있을까
- appStoreReceiptURL
- .ipa 파일 만들기
- How to Set - 세로모드 고정 (Potrait)
- Info.plist : (값 가져오기, 권한)
- Info.plist - App Version 가져오기
- Xcode 주석사용법
- XCode - 전처리문 사용하기
- Privacy - 여러가지 접근권한요청
- Scheme - Debug / Release 빌드 분리하기
- Xcode에서 디버그뷰 활성화하기 :Firebase, GA4
- iOS DeviceSupport - 테스트 디바이스 iOS 수동 업데이트
- AVFoundation - AVPlayer 사용하기
- AVFoundation - TTS : Text-To-Speech
- AVFoundation - Barcode Scanner 구현하기
- userDefault
- Calendar - 캘린더로 두 개의 날짜 비교하기
- FileManager - 파일 다운로드하기
- FileManager - 사용하기
- Foundation - JSONSerialization(1): 직렬화 Intro
- Foundation - JSONSerialization(3): Decode JSONData
- Foundation - JSONSerialization(2): Encode JSONData
- String Protocol - String to Data
- 타임스탬프 구현하기
- CMTime
- UIAlertView Deprecated in iOS 9, Replaced by UIAlertController in iOS 10.0
- MPMoviePlayerController Deprecated in iOS 10, Replaced by AVPlayerViewController in iOS 7
- NSURLConnection Deprecated in iOS 9, Replaced by URLSession in iOS 7
- 'setVolume:' is deprecated: first deprecated in iOS 7.0 - Use MPVolumeView for volume control.
- Layout - SwiftUI: Text
- Layout - SwiftUI: Image
- Layout - SwiftUI: Button
- Layout - SwiftUI: Spacer
- Layout - SwiftUI: Padding
- Layout - SwiftUI: HStack, VStack, ZStack
- Layout - SwiftUI: NavigationView
- Layout - SwiftUI: TabView
- SwiftUI - Control에 대하여
- SwiftUI - View 프로토콜
- Layout - SwiftUI: Color
- Layout - SwiftUI: List
- Layout - SwiftUI: ScrollView
- Layout - SwiftUI: State와 바인딩
- UIKit으로 구현된 화면에 SwiftUI View를 추가하기 : UIHostingController
- UIKit에서 SwiftUI의 Preview 사용하기
- UIKit에서 SwiftUI의 Preview관련 함수 만들어 사용하기
- SwiftUI에서 UIKit 사용하기 : UIViewRepresentable, UILabel, WebView
- UIKit - UIStoryboard
- [Apple Document] - About App Development with UIKit
- UIKit기반 앱의 간단한 화면 인터페이스 구조
- 읽어야할 개발자 문서
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(0) : Intro
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(1) : Creating a list View
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(2) : Adopting collection views
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(3) : Displaying cell info
- Container ViewController Type - Navigation Controller
- Layout - 오토레이아웃의 개념
- Layout - UIView에 대하여
- Layout - CGRectMake는 뭘까
- Layout - CodeUI: CustomShadow(feat.CustomClass)
- Layout - CodeUI: UIView, UILabel
- Layout - CodeUI: UILabel 고정폭 지정 이유 및 방법
- Layout - 이미지 컨텐츠 모드 (ContentMode)
- Layout - StoryboardUI: CornerRadius
- UIAlert 어디서든 띄우기
- Layout - Hierarchy of UIView (feat. addSubView)
- 현재기기의 화면크기 측정하기 + 콤바인을 이용한 반응형레이아웃 만들기
- MessageUI란
- MessageUI - MFMailComposeVC : 문의메일 보내기
- MessageUI - MFMessageComposeVC : 문자메세지 보내기
- NSDate - Timezone: UTC, GMT, KST
- NSObject - Timer : 타이머 구현하기
- NSObject_UIBarItem_UIBarButtonItem & UITabBarItem : 네비게이션바 / 툴바 / 탭바를 표시하는 아이템
- CGColor에 대하여
- NSObject - UIFont
- NSObjcect_GestureRecognizer_UILongPressGestureRecognizer
- NSObject_UIResponder : UIResponder와 Responder Chain
- NSObject_UIResponder_UIViewController_UIActivityViewController : 공유하기 기능
- NSObject_UIResponder_UIViewController : 소개
- NSObject_UIResponder_UIViewController : 생성자
- NSObject_UIResponder_UIViewController : UIViewController's Life-cycle (뷰컨트롤러의 생명주기)
- NSObject_UIResponder_UIView : UIView 클래스
- UIView의 Drawing Cycle (Layout Cycle)
- NSObject_UIResponder_UIView_UIImageView - 경로를 통해 이미지 다운로드하여 세팅하기
- NSObject_UIResponder_UIView : UIPickerView
- NSObject_UIResponder_UIView_UIProgressView
- NSObject_UIResponder_UIView_UIScrollView
- NSObject_UIResponder_UIView : UITabBar
- UIView - Layer란 무엇인가(작성중)
- NSObject_UIResponder_UIView_UIActivityIndicatorView : 사용법
- UIKit에서 RootViewController 찾기
- CGPoint, CGSize, CGRect
- UIDevice
- UIKit - UISearchBar
- UICollectionView - 프로퍼티 옵저버 didSet과 isSelected
- [Apple Document] - UIApplicationMain(::::)
- [Apple Document] - UIApplication 싱글턴 객체
- [Apple Document] - AppDelegate, UIApplicationDelegate 프로토콜
- [Apple Document] - Managing your app’s life cycle : 앱의 생명주기 관리
- [Apple Document] - Responding to the launch of your app : 앱 실행에 대한 응답
- [Apple Document] - About the app launch sequence : 앱의 실행되는 순서에 관하여
- 앱의 구동에 관하여
- UIApplication_AppDelegate - 헷갈릴수 있는 두 함수(didReceive형제)
- UIApplication_AppDelegate - userNotificationCenter
- UIApplication_AppDelegate - UIApplicationDelegate : 앱의 상태 / 생명주기(Life-Cycle)
- [Apple Document] - UIControl.Event 살펴보기
- UIKit - UIAlertController : 장문의 얼럿 만들기
- NSObject_UIResponder_UIView_UIControl : UIButton
- NSObject_UIResponder_UIView_UIControl : UIDatePicker
- NSObject_UIResponder_UIView_UIControl : UIRefreshControl
- NSObject_UIResponder_UIView_UIControl : UISegmentedControl
- NSObject_UIResponder_UIView_UIControl : UISlider
- NSObject_UIResponder_UIView_UIControl : UISwitch
- NSObject_UIResponder_UIView_UIControl : UITextField
- NSObject_UIResponder_UIView_UIScrollView_UICollectionView : 사용법
- UICollectionView with DiffableDataSource
- UICellAccessory : UICollectionView에 사용하는 악세서리 Struct
- UITableView - 템플릿
- UITableView - 기본 UITableView 생성
- UITableView - 커스텀 UITableViewCell
- UITableView - Section 구현하기
- UITableView - 셀 선택, 삭제 및 상호작용
- UITableView - 동적 셀 높이
- UITableView : 편집스타일 설정하기 - editingStyle
- [Apple Document] - NSObject_UIResponder_UIView_UITableViewCell
- NSObject_UIResponder_UIView_UITableViewCell : accessoryType
- NSObject_UIResponder_UIView_UIScrollView_UITableView : 셀 경계선없는 테이블뷰
- NSObject_UIResponder_UIView_UIScrollView_UITableView : 셀 클릭시 높이가 변경되는 테이블뷰
- NSObject_UIResponder_UIView_UIScrollView_UITableView : SwiftUI로 셀 구현하기
- PHPickerController 사용하기-iOS14이상
- UIImagePickerController 사용하기-iOS14미만
- NSObject_UIResponder_UIViewController_UITableViewController : 테이블뷰 전용 ViewController
- Integrity - 앱 설치환경 체크
- Integrity - 인증서(.p8, .p12 / Development, Distribution / Producation SSL, Development SSL)
- Integrity - 인증서와 프로비저닝 프로파일 (Certificate & Provisioning Profile) 관리하기
- Integrity - DeviceCheck
- Integrity_개인정보 보호 매니페스트 PrivacyInfo.xcprivacy 만들기
- Integrity - UUID / UDID / IDFA / IDFV
- Integrity - APN 인증키(.p8) 발급받기
- Integrity - 중간자 공격(man-in-the-middle attack)
- Integrity - 리플레이 공격(Replay attack)
- iOS - 패키지 의존성 관리 도구: CocoaPods, Carthage, SPM
- About Swift PackageManager
- CocoaPods 사용하기
- About CocoaPods Error 방지하기
- Convention - SwiftLint 세팅하기
- Convention - SwiftLint 세부설정하기
- 라이브러리 - 카카오 SDK 사용하기
- 라이브러리 - GIFu 사용하기
- Library - Hero
- 라이브러리 - Kingfisher 사용하기
- 라이브러리 - swiftSoup
- Push - 핑거푸시
- ReactiveX: RxSwift Introduce
- SNS Login - Kakao
- SNS Login - Naver
- 네트워크 통신의 이해
- NSObject - URLSession
- Notifications - IOS에서 사용하는 알림의 종류
- 개념 - 페이로드(Payload)
- Cookie - ios에서 쿠키 다루기
- Cookie - WKProcessPool를 사용해 여러 웹뷰에서 쿠키 공유하기
- WebView - WKWebsiteDataStore 사용하여 웹뷰의 데이터관리하기
- Cookie란
- Cookie - cookieAcceptPolicy (쿠키수락정책)
- Cookie - 현재 웹뷰로 쿠키 가져오기
- Network Programming - RESTful APIs 사용하기
- 네트워킹 - 각종 URL의 유효성 검사
- WebView - PC에서 사용중인 내부망을 Iphone으로 연결시키는 방법
- WKWebView 사용하기, 구성 요소 살펴보기
- WebView - 웹뷰에 스크립트를 적용시키는 방법
- WebView - 웹에서 앱으로 보내는 JavaScript 수신하기 : WKScriptMessageHandler
- WebView - Delegate method
- WebView - 앱에서 웹소스의 JavaScript 메서드 호출하기 : evaluateJavaScript()
- WebView - App에서 웹페이지를 여는 3가지 방법
- WebView - 네비게이션컨트롤러 목록으로 웹뷰 관리하는 방법
- WebView - Safari로 웹뷰 디버깅하는 방법
- WebView - createWebViewWith : blank로 새창열기
- WebView - 자주 사용하는 메서드
- WebView - 스와이프로 리프레시 세팅
- webview - 바운스 효과 제거하기
- 정리 : iOS에서의 화면관리 및 전환
- 기본적인 iOS 앱의 구조 / 탭바컨트롤러 / 네비게이션컨트롤러
- 화면전환 - UINavigationController 이해하기
- present - CodeUI to StoryBoard
- present - UIKit to SwiftUI
- Segue를 이용한 화면이동
- Show는 push와 present의 추상화 메서드
- 화면전환 - UITabBarController 이해하기
- Flutter - 문서 구조 가이드
- Flutter - 설치 및 환경 세팅 가이드
- Flutter - Splash 구현
- Flutter - 위젯 개요
- Flutter - 기본 위젯 4종 (Text, Icon, Image, Box)
- Flutter - 레이아웃의 이해
- Flutter - Drawer : GNB / 사이드바
- Flutter - ListView
- Flutter - Toggle Switch
- Flutter - 삼각형 View 그리기
- Flutter - 네트워크 통신 기초 (RESTful API 중심)
- Flutter - 화면 전환(Navigator)
- Flutter - 웹뷰구현 : inappwebview 세팅(권장)
- Flutter - 웹뷰구현 : webview_flutter 세팅
- Flutter – Flavor를 이용한 빌드 환경 분리
- Flutter - iOS 릴리즈 빌드 및 .ipa 생성
- Flutter Error - Trouble Shooting Template
- Flutter Error - WebView_PlatformNotSet : WebViewPlatform.instance 오류
- Flutter Error - WebView_NDKVersionMismatch : Android NDK 버전 불일치
- Flutter Error - Entrypoint doesn't contain...
- 마크다운 - HTML사용하기
- 마크다운에서 Toggle(Expander control) 기능 사용하기
- 마크다운 - 이미지 사이즈 세팅하기
- 마크다운 - TOC기능 만들기 (Table Of Contents)
- 마크다운 - 표 만들기 (Table)
- Git 브랜치 전략 3종 요약 (Git Flow / GitHub Flow / GitLab Flow)
- Git Actions - Permission to ....git denied to github-actions
- Git - 튜토리얼(1) : 브랜치 생성하기. 리스트 확인, 브랜치 체크아웃
- Git - 튜토리얼(2) : pull, fetch
- Git - 튜토리얼(3) : status, add, restore, reset
- Git - 튜토리얼(4) : commit, push
- Git - 푸시한 커밋의 Author 변경하기(username과 user email 수정하기)
- GitHub - Various APIs
- GitLab SSH키 생성하기
- Git - 브랜치 삭제하기
- 브랜치 이름 변경하기
- 푸시 에러 : 원격 저장소와 커밋 기록이 다른 경우
- Git - 현재 깃폴더에 연동한 username 확인하고 변경하기
- 공동작업을 위한 Git 버전관리
- git ignore를 사용하여 불필요한 업로드 줄이기
- Git - Fork한 레포지토리 최신화 하기
- Git - 갑자기 터미널이 한글로 나온다면
- Git - 깃 리모트 변경 하기
- Commit Template - 소스트리
- XcodeError - UserInterfaceState.xcuserState가 자꾸 뜰 때