Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 클린 코드
- Protocol
- MVVM
- SWIFT
- UICollectionView
- UITextView
- ribs
- Refactoring
- tableView
- clean architecture
- Observable
- Clean Code
- 리펙터링
- collectionview
- uiscrollview
- combine
- 리팩토링
- RxCocoa
- swift documentation
- ios
- Human interface guide
- HIG
- uitableview
- 리펙토링
- 애니메이션
- map
- Xcode
- swiftUI
- 스위프트
- rxswift
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
Tags
- ios
- SWIFT
- swiftUI
- HIG
- Human interface guide
- Refactoring
- 리펙토링
- rxswift
- UICollectionView
- uitableview
- Xcode
- clean architecture
- RxCocoa
- tableView
- uiscrollview
- collectionview
- UITextView
- Observable
- 리팩토링
- 애니메이션
- 클린 코드
- Clean Code
- map
- swift documentation
- combine
- MVVM
- 스위프트
- Protocol
- ribs
- 리펙터링
- UITextField
- DispatchQueue
- flatMap
- async
- solid
- Background
- Animation
- swift macro
- CAShapeLayer
- UIStackView
- cocoapods
- Firebase
- push notification
- scrollview
- 화면전환
- push
- autolayout
- xib
- AVFoundation
- 모듈화
- 동시성
- StoryBoard
- enum
- concurrency
- Network
- Deeplink
- snapkit
- WKWebView
- textField
- Fastlane
- section
- padding
- list
- 스위프트 매크로
- WWDC2023
- Refactoring (Marting Flowler)
- Tuist
- UICollectionViewFlowLayout
- StoreKit
- custom view
- GCD
- CABasicanimation
- uiimage
- UILabel
- DIP
- pagination
- present
- cache
- timer
- 클로저
- JSON
- Dictionary
- 메모리 프로파일링
- UICollectionViewCompositionalLayout
- 수평 스크롤 뷰
- 클린 아키텍처
- static framework
- @ObservedObject
- @state
- 컬렉션 뷰
- computed property
- UIBezierPath
- stackview
- URLSession
- alamofire
- reduce
- CALayer
- avplayer
- UIView
- UIButton
- 커스텀 뷰
- loading
- NIB
- 프로토콜
- Switch
- 딥링크
- closure
- Unit Test
- struct
- DI
- Merge
- layout
- 접근성
- cell
- 배포
- 네트워크
- UI
- wwdc2024
- Memory Deep Dive
- RxDataSources
- KeyPath
- weak self
- dynamic framework
- highlighted
- NotificationCenter
- CI/CD
- Codable
- UIKit
- await
- Coordinator
- 이미지 리사이징
- 웹뷰
- 페이지네이션
- 딕셔너리
- Networking
- memory leak
- SET
- thread safe
- 프레임워크
- Property
- accessibility
- Filter
- thread
- 연산자
- class
- 오디오
- 테스트
- Swift5.9
- 조건부 로직 최소화
- 커스텀 단축키
- Concurrent Programming
- 수평 스크롤
- @StateObject
- ObservableObject
- retain cycle
- ReactorKit
- CAGradientLayer
- NSMutableAttributedString
- retry
- 동시성 프로그래밍
- stored property
- UIView.animate
- custom button
- NSRange
- @EnvironmentObject
- Hugging
- layoutSubviews
- main run loop
- update cycle
- convenience init
- NIMBLE
- NSCache
- graphQL
- firestore
- Provisioning Profile
- TabView
- 테이블뷰
- 고차함수
- apns
- Optional
- VoiceOver
- foreground
- git
- Moya
- 트랜지션
- SRP
- Some
- TRANSITION
- PlaceHolder
- 컴포넌트
- mask
- 리팩터링
- RX
- Binding
- 로딩
- Module
- array
- foreach
- macos
- REST
- hero
- MVC
- localization
- framework
- Widget
- 미디어
- 단축키
- API
- Memory profiling
- Memgraph
- long press gesture
- 상속 리펙토링
- ~Copyable
- UIGraphicsBeginImageContextWithOptions
- Build Setting
- objc_setAssociatedObject
- vmmap
- layoutIfNeeded()
- @Published
- DecorationView
- NSAttributedString
- @resultBuilder
- @dynamicMemberLookup
- UIActivityViewController
- imageCache
- 이미지 캐싱
- testable
- 로딩 뷰
- 인앱 결제
- setContentHuggingPriority
- capture list
- 기능 이동
- DispatchQueue.main.sync
- SF Symbol
- swiftlint
- ContentInset
- contentOffset
- BottomSheet
- 키보드 업
- launchScreen
- removeFromSuperview
- instantiateViewController
- 클린 아키텍쳐
- WidgetKit
- UICollectionVIewLayout
- URLComponents
- custom cell
- 오토레이아웃
- 선언형 프로그래밍
- UIPanGestureRecognizer
- 테이블 뷰
- navigationbar
- ~=
- WKScriptMessageHandler
- UserDefaults
- UIViewController
- 스크롤 뷰
- vstack
- hstack
- 커스텀 버튼
- url scheme
- icloud
- github
- value type
- navigation controller
- UITableViewCell
- UDID
- core data
- 이미지 처리
- 제네릭스
- quick
- Catch
- Encode
- Throw
- 성능 최적화
- RESTful
- CURSOR
- 비동기
- sync
- margin
- notification
- OPERATION
- Location
- delegate
- Circle
- stack
- Path
- 유닛 테스트
- init
- 스레드
- heap
- dismiss
- 결제
- Scheduler
- Generics
- Dependency Injection
- Label
- 문자열
- Share
- architecture
- 튜토리얼
- 디자인 패턴
- If
- date
- 타이머
- ZIP
- SQLite
- 검색창
- 최적화
- Interface
- string
- 썸네일
- navigation
- 구독
- Library
- font
- URL
- 위젯
- 동영상
- wwdc24
- consuming
- Privacy manifest
- share sheet
- 추상화하기
- memory profile
- memory footprint
- isAccessibilityElement
- accessibilityLabel
- NSMapTable
- SDWebImage
- OptionSet
- 멀티파트
- 스위프트의 새로운 기능
- SwiftSyntax
- 네이버웹툰 뷰
- WWDC 2024
- 앱 접근성
- Type Erase
- Xcode 알파벳 순 정렬 단축키 만들기
- defaults
- 중첩함수 제거
- 함수 옮기기
- tuist scaffold
- ImageSource
- objc_getAssociatedObject
- ActivityKit
- dynamic island
- NSLock
- UIViewControllerRepresentable
- 스위프트 유아이
- PHCachingImageManager
- RxSwfit
- Mach-O
- UICollectionViewCell
- PinLayout
- FlexLayout
- AVPlayerLayer
- GeometryReader
- isHighlighted
- 중첩 모델
- nestedContainer(keyedBy:forKey:)
- 커스텀 팝업
- Higher order function
- CAKeyframeAnimation
- OperationQueue
- Martin Flowler
- CloudKit
- DragGesture
- DispatchSourceTimer
- 앱 푸시
- JSONSerialization
- Diffable Data Source
- dynamic cell
- NavigationLink
- 코드에서 나는 악취
- UIActivityIndicatorView
- setContentCompressionResistancePriority
- UIGraphicsGetImageFromCurrentImageContext
- 불변성
- Opaque Type
- Swift Document
- build scheme
- observable stream
- 타입 캐스팅
- UIGraphicsBeginImageContext
- spacing
- CATransaction
- translatesAutoresizingMaskIntoConstraints
- Share Extension
- 로컬 푸시
- Gemfile
- designated init
- AttributedString
- intrinsicContentSize
- removeFromParent
- willMove
- addChild
- UIStoryboard
- shouldChangeCharactersIn
- AVPlayerItem
- header view
- first responder
- File's owner
- ControlEvent
- ObservableType
- withLatestFrom
- @propertyWrapper
- ContainerView
- PageControl
- share()
- hashable
- propertyWrapper
- safearea
- string to date
- 위치 권한
- DispatchGroup
- DispatchWorkItem
- combineLatest
- UIPageVIewController
- debounce
- DispatchQueue.main.async
- table view
- responder chain
- endpoint
- sticky header
- tableviewcell
- traits
- compactMap
- AppDelegate
- inout
- CGAffineTransform
- consume
- bundler
- 함수형 프로그래밍
- 패턴 매칭
- crashlytics
- Inset
- segue
- Auto Layout
- Navigation Bar
- 클린코드
- Reactive
- 재시도
- Grouped
- 앱 아이콘
- Info.plist
- UIImageView
- Uber
- 아이클라우드
- rib
- 이미지 회전
- decoding
- 비동기처리
- 이미지 업로드
- 컴바인
- 스크롤뷰
- 앱개발
- 마스킹
- Carthage
- WebView
- in app purchase
- IAP
- disk cache
- binder
- Drag and Drop
- concat
- LSP
- 크래시
- 스레드 세이프
- Carousel
- type casting
- ipa
- Gradation
- Linear
- badge
- Throttle
- 생성 패턴
- getter
- subject
- gem
- Task
- 캐싱
- substring
- Item
- overlay
- footer
- 카르타고
- range
- 디코딩
- decode
- ARC
- Compression
- Alert
- status bar
- 푸시
- 바인딩
- assets
- modal
- build
- phase
- 그라데이션
- builder
- describe
- Deadlock
- point
- Observer
- SHAPE
- 캐시
- Alpha
- regex
- Response
- header
- TabBar
- OCP
- datasource
- Configuration
- match
- Debug
- Scroll
- Toggle
- 캡슐화
- Apollo
- media
- button
- context
- setter
- self
- commit
- 여백
- multipart
- shadow
- TEXT
- Scale
- 디버깅
- Automatic
- View
- 정규식
- Cookie
- 조건문
- 마틴 파울러
- 상속
- concurrent
- 디자인패턴
- Scheme
- error
- 페이징
- image
- 데이터베이스
- ruby
- Preview
- Release
- 인코딩
- 버튼
- 쿠키
- gif
- POP
- 이미지
- Drag & Drop
- Beta
- 로그인
- tag
- isp
- keyboard
- xml
- Apple
- domain
- 문자열에 이미지 넣기
- xcresult
- message filter app extension
- 알 수 없는 발신자 메시지 분류
- explore swift performance
- what’s new in swiftui
- what's new in xcode 16
- swift testing
- navigation app
- 딤드효과
- noncopyable
- @Sendable
- UIScreen.main.scale
- PrivacyInfo.xcprivacy
- animationRepeatCount
- animationDuration
- startAnimating()
- animationImages
- 뷰 업데이트
- 위임하기
- VM Tracker
- 메모리 프로파일
- 이미지 핸들링
- resident size
- swapped size
- dirty size
- compressed memory
- dirty memory
- 한글 문자열 처리
- CGImageSourceCreateThumbnailAtIndex
- Touch Indicator
- DebugTouchesWindow
- 이미지 회전처리
- convert(_:to:)
- UIGraphicsEndImageContext
- 커서 이동 처리
- shouldChangeTextIn
- swift-syntax
- UIBlurEffect
- UIVisualEffectView
- accessibilityHint
- Move-only Types
- 오픈소스 까보기
- Swift 메모리 할당
- stack과 heap의 메모리 주소 범위 확인 (vmmap)
- snapshotView
- keyboard 처리
- URLSessionConfiguration
- URLSessionUploadTask
- pagerView
- setContentOffset
- API 리펙토링
- VoiceOver Accessibility
- AnyHashable
- existential any
- swift5.8
- associatedtype
- any 키워드
- Xcode의 import 부분을 정렬하는 단축키 만들기
- 의존성 설정 방법
- .stencil
- Project.swift
- 코드로 초기화
- @IBOutlet
- storyboard로 UI 구현
- 스레드 프로그래밍
- custom shortcut
- Notification Content Extension
- Notification Service Extension
- Rich Push
- Rich Push Notification
- .evenOdd
- CGMutablePath
- DispatchQueue.main
- UI 성능 분석
- Animation Hitches
- UI 성능 개선
- 스틱키 헤더
- addAction
- contentInsetAdjustmentBehavior
- nested closure
- 비동기 테스트
- async let
- Live Activity
- PreferenceKey
- Prevent Capture
- WidgetExtension
- 다이나믹 아일랜드
- WithAnimation
- searchable
- subscribe(on:)
- PHImageRequestOptions
- Memory Safety
- DynamicViewContent
- LazyVStack
- 프로토 버퍼
- disableAutocorrection
- textInputAutocapitalization
- textFieldStyle
- @FocusState
- TextField ViewModifier
- UIViewRepresentable
- EnvironmentKey
- @Environment
- EnvironmentValues
- onAppear
- resizable()
- 앨범 가져오기
- PHAssetCollection
- PHAsset
- Horizontal ScrollView
- retry(_:)
- Embed & Sign
- InAppPurchases
- In App Purchases
- Purchases
- 다중 Item
- Dismiss 애니메이션
- Present 애니메이션
- UIGestureRecognizer
- WWDC2022
- AVAudioRecoder
- beforeEach
- invalidateIntrinsicContentSize()
- touchesEnded
- @frozen
- UIViewControllerTransitioningDelegate
- @inlinable
- FooterView
- 다중 Section
- 멀티 셀
- TooltipView
- retry(when:)
- PushKit
- nestedContainer
- 스켈레톤 뷰
- Swift Concurrency
- 드래그앤 드롭
- DragDropCollectionView
- NSMutableParagraphStyle
- ReferenceWritableKeyPath
- WritableKeyPath
- Reactive Extension
- 이벤트 로깅
- SerialDispatchQueueScheduler
- 리펙토링 예시
- UIView.transition
- 연속 애니메이션
- Dynamic Member Lookup
- RxSwiftExt
- SwiftGen
- dynamic size
- MessageKit
- 채팅 UI
- Dynamic Link
- Firebase Dynamic Link
- App Push
- Horizontal Scroll View
- insertRows
- custom popup
- WKUIDelegate
- WKNavigationDelegate
- 동적 셀
- Single scale
- modalPresentationStyle
- UINavigationBar.appearance()
- IndicatorView
- UIEdgeInset
- memory cache
- 프로토콜 버퍼
- protocol buffer
- URLSessionDataTask
- superview
- Xcodebuild
- 불투명 타입
- 문장 슬라이드
- self resizing cell
- UI 컴포넌트
- 가로 스크롤 뷰
- 아이 클라우드
- NSExpression
- Grand Central Dispatch
- UIMenu
- 언아카이빙
- Glyphs
- thread programming
- RunLoop
- RunLoop.Mode
- String(describing:)
- CustomStringConvertible
- Run Loop
- App Tracking Transparency
- storyboard reference
- weak var
- MVC with coordinator
- xcconfig
- Listener interface
- 코코아팟 라이브러리
- callkit
- Dependency Inversion Principle
- layer.mask
- 키보드 내리는 방법
- Active Compilation Conditions
- Other_swift_flags
- intersects
- CleanArchitecture
- editingChanged
- rx.text
- structured programming
- podfile.lock
- RetryWhen
- AttributedText
- 딥 링크
- RxGesture
- R.swift
- ContainerViewController
- UILongPressGestureRecognizer
- 카메라 권한
- dynamicMemberLookup
- Provisioning profiles
- Certificates
- PostTaskManager
- GoogleService-Info.plist
- didmove
- addSubview
- Truncate Tail
- layer.masksToBounds
- pod install
- .xcworkspace
- KeychainAccess
- @Binding
- EnvironmentObject
- Transition style
- URLQueryItem
- XCoordinator
- init(coder:)
- ControlProperty
- RxTest
- 배포 자동화
- Test code
- property wrapper
- rebase interactive
- UIPasteboard
- cornerRadius
- CodingKeys
- CustomCell
- Equtable
- Delegate Proxy
- Optional Chaining
- what's new in swift
- NSCoding
- hitTest
- flatMapLatest
- date to string
- userInitiated
- userInteractive
- 스냅킷
- 코어 데이터
- 프로퍼티 리스트
- property list
- appId
- SceneDelegate
- slide bar
- @IBInspectable
- required init
- contentView
- 연산 프로퍼티
- pageviewcontroller
- 키보드 처리
- Syntactic Sugar
- 스택뷰
- dispatchSemaphore
- performBatchUpdates
- unowned
- 글자 제한
- restful api
- NSPredicate
- constraints
- 선언형
- squash
- 코어데이터
- 모듈성
- ViewController
- Weak
- bitrise
- ViewModel
- @escaping
- lazy var
- pytorch
- 바텀 시트
- bottom sheet
- Authenticator
- Grid View
- STEPPER
- FAKE GPS
- UITapGestureRecognizer
- submodule
- spacer
- autoresizingMask
- 로버트 C. 마틴
- navigationview
- programmatically
- headerview
- watchos
- pattern matching
- reloadData
- 애플워치 앱
- charts
- arm64
- private key
- Single responsibility principle
- 사진 가져오기
- side bar
- Deferred
- 데드락
- gitlab
- picker
- 키패스
- rbenv
- 전화받기
- git reset
- pixabay
- CoreData
- line break
- Public key
- UIWindow
- kvo
- kvc
- 스미싱
- git diff
- git add
- 아카이빙
- localizable
- image resizing
- UIWebView
- AVCaptureDevice
- local notification
- Identifiers
- dynamic library
- navigationcontroller
- 텍스트뷰
- gradient
- UTF16
- ToggleButton
- 상태관리
- customview
- UIControl
- UIToolbar
- UISegmentedControl
- underline
- actionSheet
- 탭바
- 화면 전환
- Completion
- deep link
- subscribe
- Reference Type
- selected
- DatePicker
- 애플 계정
- 메모리 릭
- Convenience
- Viper
- protobuf
- 멀티 플랫폼
- radial
- 자동 스크롤
- form-data
- FileManager
- 쉐이킹
- 모달
- animate
- Full Screen
- Clean Memory
- Templates
- dependency manager
- revert
- Profiles
- ToolTip
- 메모리릭
- 지역화
- 노티
- AppStore
- any
- Gesture
- Strong
- drag
- 전화걸기
- joined
- 공유하기
- timeout
- Abstract Factory
- 제스쳐
- Provider
- 무료 아이콘
- 햅틱
- 생명주기
- Plain
- Default
- shared
- logger
- Simulator
- contains
- 구조적 프로그래밍
- Error Handling
- Virtual Memory
- 이미지 다운로드
- dynamic
- svg
- 네이밍
- drop
- Benchmark
- extensions
- Try
- 로깅
- Layer
- parameter
- Borrowing
- static library
- branch
- mint
- DATE()
- 메모리 최적화
- 드래그
- Stream
- certificate
- 마진
- Grow
- PREFIX
- Length
- foundation
- Splash
- Slide
- shell script
- URI
- 스냅샷
- 해시
- Critical Section
- actor
- Canvas
- keychain
- 예외 처리
- 회원가입
- State
- if문
- Global
- SCAN
- delete
- Progress
- 프로퍼티
- 콜백
- Pixel
- Serial
- shrink
- Refactor
- checkbox
- 커서
- 슬라이더
- USECASE
- Prefetch
- BDD
- Instrument
- Reset
- offset
- swipe
- Sequence
- 메모리 관리
- bind
- Bundle
- Collection
- 자동화
- services
- AXIS
- DFS
- data
- Frame
- generic
- Dialog
- 테두리
- target
- paging
- loader
- Rebase
- terminal
- interval
- 추상화
- Mock
- Device
- singleton
- main
- MIRROR
- 객체지향
- 상태
- Resource
- Entity
- interaction
- slider
- encoding
- 모듈
- Open Source
- 배열
- Open
- capsule
- DOUBLE
- 메뉴
- 직렬화
- JUnit
- real
- draw
- Action
- CI
- 함수
- Request
- HTTP
- toolbar
- 인증
- id
- 스케쥴러
- 터미널
- 네비게이션
- 패스워드
- Camera
- private
- 평점
- Single
- LINK
- Display
- Shell
- iCon
- TIME
- 비디오
- Regular Expression
- 공유
- OS
- 그림자
- Presentation
- 아이콘
- Blur
- 스크롤
- 초기화
- 채팅
- CD
- VoIP
- 녹음
- 앨범
- 맥북
- mp3
- Linux
- DESIGN
- 키보드
- IT
- Tutorial
- photo
- 오픈소스
- 이메일
- plugin pattern
- 플러그인 패턴
- 커스텀 토글 버튼
- 선언적 코딩
- layoutpriority
- 뷰 속성 순서
- 뷰로 감싸기
- 뷰로 덮기
- contentshape
- stack 사이즈 고정
- stack 패딩
- swift6
- 레트로엑티브
- retroactive
- 클로저를 잘 사용하는 방법
- 클로저의 의의
- custom view에 view 주입하는 테크닉
- sticky 헤더
- swiftui alignement
- swiftui 정렬
- reachtobottom
- 자식뷰 -> 부모뷰
- onpreferencechange
- highlighted 효과
- uitableviewcell에 pressed color
- pressed 효과
- stroke 사용 시 주의사항
- 원 안에 또다른 원 넣기
- uiscreen.main.nativescale
- 디스플레이 확대/축소
- accessibilityelement(children:)
- accessibilitysortpriority
- button 커스텀
- 진동효과
- corehaptics
- 일시 정지 타이머
- 작업 취소
- maketimersource
- (@state
- 뷰가 재사용 할 때 init호출 타이밍
- 뷰 재사용 할 때 init호출 타이밍
- 호출 타이밍
- edge gesture
- 에지 제스쳐
- 엣지 제스쳐
- uiscreenedgepangesturerecognizer
- bool대신 bit 사용하기
- 플래그 관리
- shift operator
- accessing stateobject's object without being installed on a view. this will create a new instance each time.
- 네비게이션 바 블러 효과
- navigationbar에 blur 효과
- istranslucent
- @retroactive
- 다른 앱에서 붙여넣기
- 붙여넣기 허용
- 붙여넣기 권한
- allow paste
- init에서 @state 값
- @state 사용 시 주의사항
- insert lottie in text
- text에 lottie 넣는 방법
- type 'any personable' cannot conform to 'observableobject'
- type any cannot conform to observableobject
- 문자열과 이미지
- 문자열에 이미지
- nstextattachment
- xcpretty
- cobertura
- xcrun xcresulttool
- xcode build
- test build
- obejctwillchanged
- sms message filters 구현 방법
- sms message filters
- xcode 16
- could not create iphone se...
- iphone se1 시뮬레이터
- xcode 시뮬레이터
- #existential types
- #opaque types
- generic 차이
- 문자열 들여쓰기
- 불릿 텍스트
- headindent
- unsaferawpointer
- memorylayout
- withunsafepointer
- struct안에 있는 class
- 합치는 연산자
- 배열 합치는 연산자
- optional 타입에 map 사용하기
- synthetic sugar
- @state 직접 구현해보기
- mutating 없이
- cell 터치 애니메이션
- cell 터치 이벤트
- 헤더 뷰 색상
- 헤더뷰
- screenblendmode
- compositingfilter
- 색상 섞는 방법
- out of line mutable storage
- collection type
- 소유권 개념
- swift 성능
- multiline string literal
- """
- 멀티 라인 문자열
- @entry
- foreach(subviewof:)
- widgets and live activities
- tabviewcustomization
- tabviewstyle(.sidebaradaptable)
- what’s new in swiftui - xcode 16 - ios 18
- thread performance checker
- dwarf5
- explicit modules
- @previewable
- isolated global variables
- xcode16 신기능
- previewmodifier
- data-race safety
- typed throws
- c++ interoperability
- embedded swift
- explicitly built modules
- building 개선
- swiftui sample
- swiftui turorials
- isselected
- uiauiactivityviewcontrollerc
- 메모리 적재
- 메모리 적재 타이밍
- memory leaks
- 네트워크 링크 컨디셔너
- 개발 옵션
- 네트워크 테스트
- network delay
- 네트워크 딜레이
- 눈 효과
- 눈 내리기
- 폭죽 애니메이션
- 콘페티
- caemittercell
- confettilayer
- konfetti
- confetti
- kciinputsaturationkey
- cicolorcontrols
- dimmed효과
- 메모리 효율성
- binding macro
- observable macro
- dictionary default
- 딕셔너리 디폴트 값
- reduce(_:_:)
- reduce(into:_:)
- 문자열 사이 콤마 넣기
- reduce 연산자
- === 연ㄴ산자
- == 연산자
- uiview를 비교 가능한 이유
- scale factor
- 화면 스캐일
- 스캐일
- sizeThatFits
- sizeToFit
- SDWebImagePrefetcher
- 이미지 prefetch
- The archive dose not contain any 'PrvicyInfo.xcprivacy' files
- privacy report
- CollectionType
- map vs flatMap
- map과 flatMap 차이
- Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
- safeAreaInsets
- 'keyWindow' was deprecated in iOS 13.0
- 함수 주석 템플릿 단축키
- 메소드 파라미터 주석
- 유용한 주석 단축키
- 딕셔너리 value 변환
- protocol 구현체
- protocol 준수
- protocol confirm
- 자동 마진
- 하단 34
- 상단 59
- UITableView 하단 inset
- UILabel 높이 계산
- UILabel 높이 static하게 가져오는 방법
- UILabel의 높이
- dynamicallyCall(withKeywordArguments:)
- dynamicallyCall(withArguments:)
- dynamicallyCall
- @dynamicCallable
- compactMapValues
- isMultiple(of:)
- UI 모델
- UI모델과 domain모델 분리
- domain모델
- UI모델
- Factory 패턴
- query string 파싱
- query parameter 파싱
- struct proprety 매핑
- repeat each
- parameter packs
- login details for account rejected
- Unable to log in with account
- 이미지 연속 재생
- UTType
- shareViewController
- Atomic 프로퍼티
- Atomic property
- AssociatedObject 생명주기
- NSExtensionActivationRule
- 인터페이스 제공
- UI 구현
- 바텀시트 공유
- pngData
- jpegData
- alphaInfo
- rasterizeationScale
- shouldRasterize
- 프로퍼티 참조
- NSNotFound
- scrollToRow
- IndexParth
- debounce 직접 구현해보기
- [weak self]
- 스크롤 타이밍
- scrollViewDidEndDragging
- decelerate
- layoutIfNeeded 동작원리
- Autoresizing Mask
- Type casting 또 다른 표현
- 옵셔널 프로퍼티 연산 방법
- Optional Operator
- GenericTableVie
- protocol any
- protocol에 사용되는 any 키워드
- 디바이스 분기
- targetEnvironment
- 로직 분리
- swift5.10
- swift 5.10
- nested protocol
- object 출력 커스텀
- computed property를 활용한 리펙토링
- ipa 까보기
- UIKit.tbd
- UIKit framework
- Optional 타입
- for문 unwrap
- Associated Type
- enum에 공통 변수가 필요한 경우 리펙토링 방법 (wrapping)
- 모달 화면 전환
- 모달 방식 화면 전환
- 화면 표출
- 화면 표현
- editScheme
- 디버깅 UserDefaults 간편 세팅
- Arguments Passed On Launch
- typw
- 커스텀 뷰 구현
- 성능 이슈
- resident memory
- 동시에 애니메이션 적용
- 애니메이션 동시 적용
- CAAnimationGroup
- 안드로이드 스타일 로딩 뷰
- loading view
- Circular Loading View
- iOS 메모리
- swapped memory
- 코드 역추적
- 메모리 프로ㅠ파일링
- dictionary 초기화
- dictinoary
- UIPinchGestureRecognizer
- Xcode 버전 관리
- xcodes
- 배열 데이터 다룰때의 최적화
- LazySequence
- 메모리 관점에서의 UIImage 관리
- 백그라운드에서 최적화
- 이미지 다운 샘플링
- alpha 8 format
- luminance and alpha 8 format
- wide format 이미지
- UIGraphicsImageRenderer
- memory resource exception
- Memory Graph
- Xcode Memory Debugger
- NSCache vs Dictionary
- didReceiveMemoryWarning
- didReceiveMemoryWarning()
- 레이아웃 가이드
- UILayoutGuide
- Memory 분석
- lineFragmentPadding
- swipe gesture
- 스와이프 제스처
- allEditingEvents
- editingChnaged
- deleteBackward()
- 튜플 리턴
- 한글 관리
- 자음 모음 판단하는 방법
- Xcode Commit History
- Xcode 커밋 히스토리
- simulator touch
- 시뮬레이터 터치
- simulator touch area
- Dictionary vs CFDictionary
- CFDictionary
- Terminated due to memory
- downsampling
- image process
- renamed:
- message:)
- 메서드 리펙토링
- iOS16+
- UIButton 딤드 효과
- adjustsImageWhenHighlighted
- tintAdjustmentMode
- UITextView 위로 튕기는 현상
- UITextView 위로 스크롤
- UITextInputDelegate
- selectionRects
- 커서 위치
- textViewDidChangeSelection
- 뷰 라이프사이클
- didMoveToWindow() 메서드
- allTouches
- UIEvent
- sendEvent
- 삼항 연산자 리펙터링
- 이미지 회전 메타 정보 제거 방법
- 회전 각도 메타 정보
- 회전 각도
- imageOrientation
- 이미지 메타 다이터
- 특정 조건 제한
- 최대 입력 개수 제한
- UITextField 커스텀
- (@escaping 클로저
- weak self 외부에 선언
- weak self 리펙토링
- 캡쳐리스트
- LineMark
- BarMark
- import Charts
- swift chart
- swift charts
- .swift-format.json
- SwiftFormat
- swift-foramt
- 스위프트 포멧
- Swift Foramt
- 2중부정
- guard문 사용 시 주의사항
- 이중부정
- contentOffsetAnimationDuration
- scroll 속도
- UITextView cursor
- 복잡한 조건문 리펙토링
- 조건문 리펙토링
- Protocol 확장에서 프로퍼티 치환
- 프로토콜 프로퍼티 이름 중복
- @_implements
- 빈 문자열
- \u{200B}
- 문자열 사이 간격 조절 방법
- 문자열 사이 간격
- 라인 간격
- LineHeight
- view.window.windowScene.screen
- UIScreen.main.bounds
- 'main' will be deprecated in a future version of iOS:
- 'statusBarFrame' was deprecated in iOS 13.0: Use the statusBarManager property of the window scene instead.
- scrollViewDidEndScrollingAnimation
- setContentOffset의 completion
- setContentOffset의 handler
- 특정 뷰 포함
- 특정 CGRect 포함
- extension AnyObject
- extension Any
- Non-nominal
- KVO 개념
- KVO 간단 사용법
- KVO(Key Value Observing)
- textView.convert(_:to:)
- textView.caretRect(for:)
- UITextView의 isScrollEnabled = true
- isScrollEnabled = true
- 붙여넣기하면 외부 scrollView를 cursor위치로 스크롤링
- caretRect(for:)
- scrollToCursor
- relative frame
- 상대 frame
- window 기준 프레임 구하는 방법
- viewAppear
- 스크롤 뷰 등장
- UIView 화면에 보여지는 이벤트 구하는 방법
- 이벤트 체크 방법
- footer loading
- 하단 로딩
- ITableView의 backgroundView
- rangeOfMisspelledWord
- UITextChecker
- private let
- private var
- 숨겨진 private 프로퍼티 접근
- Propertywrapper를 이용한 디버깅
- UIButton 액션 핸들러
- 개행 단위 정렬
- MeasurementFormatter
- if 초기화
- 조건문 초기화
- Format to Multiple Lines
- ctrl + M
- 멀티라인 단축키
- 멀티 라인
- multilines
- run search path
- rpath
- dyld: Library not loaded @rpath
- 스레드 체인지
- 메인 스레드
- 허깅
- 초기화 테크닉
- 타입을 넘겨서 초기화하기
- UIGraphics 개념
- LaunchScreen과 Splash 화면
- Xcode15
- showsActivityIndicator
- UIButton.Configuration
- 심볼 애니메이션
- isSymbolAnimationEnabled
- 붙여넣기 글자 제한
- NSAttributedString와 AttributedString
- 숫자 판별
- 숫자로 이루어진 문자열인지 판별하는 방법
- URLMacro
- Symbolic Breakpoint
- memory leak 테스트
- memory leak debug
- directionalLayoutMargins
- isLayoutMarginsRelativeArrangement
- UIStackView Margin
- Xcode 맞춤법
- 맞춤법 수정
- layoutFittingExpandedSize
- layoutFittingCompressedSize
- AutoLayout 설정 후 바로 크기 알아내는 방법
- systemLayoutSizeFitting
- Swift Macro 구현
- Swift Macro 구현 방법
- Macro.swift
- 매크로 구현
- Attached
- Freestanding
- UIVibrancyEffect
- 접근성 노티
- UIAccessibility Notification
- accessibilityTraits
- accessibilityElements
- accessibilityValue
- 순서 처리
- 접근성 실전
- 보이스 오버
- 동적인 크기
- 동적인 셀
- Dynamic height
- Dynamic Cell Size
- [NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write
- JSONSerialization 크래시
- JSONEncoder
- 벤치마크 구현 방법
- RxSwift 구현방법
- weak reference
- weakCache
- SDWebImage 캐싱 정책
- Image Caching
- Image cache
- @usableFromInline
- __consuming
- move only types
- consume 키워드
- consume operator
- LockedState
- SwiftUI 같은 선언형 뷰 구현 방법
- Declarative UI
- 선언형 코드
- 선언형 UI 만들기
- @resultBuilder 예제
- enum과 set
- MALLOC guard page
- ColorSync
- dyld private memory
- MALLOC guard
- vmmap PID
- class안에 struct
- struct안에 class
- String타입
- 타입별 메모리 할당 위치 분석
- memory 할당
- Memory Address
- Swift Memory
- lldb의 memory read
- MainScheduler
- GCD와 Scheduler 차이점
- CATransaction.commit
- CATransaction.setCompletionBlock
- CATransaction.begin()
- beginFromCurrentState
- subscript(dynamicMember key: String) -> String
- dynamic member lookup 명칭
- dynamic member lookup 이름
- @dynamicMemberLookup 직접 구현해보기
- memberwise init
- struct convenience init
- allowUserInteraction
- 멀티터치 막는방법
- 멀티터치 막기
- isExclusiveTouch
- isMultipleTouchEnabled
- 원하는 뷰 영역만 드래그 할 때 보이도록 하는 방법
- dropDelegate
- dragDelegate
- dragInteractionEnabled
- itemsForBeginning
- 특정 뷰만 drag
- imported as implementation-only
- 구현부 숨기는 방법
- 내부 모듈 숨기기
- 인터페이스 숨기기
- Swift Private Interface
- @_spi(Private) import
- @_spi 키워드
- @_spi(Private)
- @spi
- @_spi
- @_implementationOnly
- protocol에서 get만 제공하는 프로퍼티에 set 기능 부여하기
- memory access conflict
- escaping closure error
- Escaping closure captures mutating 'self' parameter
- Access conflict
- MVVM 구조
- 스크롤 처리
- copy and paste
- 아이템 프로바이더
- NSItemProvider
- enum case 리펙터링
- enum case 타입 코드를 서브클래스로 바꾸기
- 안드로이드 스타일의 로딩
- 툴팁 구현 방법
- 툴팁 뷰
- ToolTip View
- 뷰 크게하기
- 뷰 줄어들게하기
- concatenating
- snapshotView(afterScreenUpdates:)
- 드래그 앤 드롭 뷰
- 드래그 뷰
- 커스텀 drag drop
- 메서드 올리기
- 메소드 올리기
- PlaceholderTextView 구현 방법
- 오류 코드를 예외로 바꾸기
- 팩토리 함수
- 팩터리 함수
- 생성자를 팩토리 함수로 변경하기
- 레펙토링
- 키보드가 올라갈 때 스크롤 뷰를 올리는 UI
- 키보드 올라갈 때 뷰
- keyboardWrappable
- 키보드 위 뷰
- 매개변수를 질의함수로 바꾸기
- RIBs 카르타고
- * RxSwift have the same architectures (arm64) and can't be in the same fat output file
- Carthage error
- 카르타고 에러
- 클로저 안에서 self 키워드 생략 방법
- @_implicitSelfCapture
- self 생략
- self 키워드 생략
- implicit self capture
- hash symbol
- 문자열 정규식
- 정규식 처리
- rawString
- 드래그앤 드랍
- UICollectionViewDropDelegate
- UICollectionViewDragDelegate
- 드래그 드랍
- getTasksWithCompletionHandler
- timeoutIntervalForRequest
- Not Running에서 업로드
- Suspended에서 업로드
- Background에서 업로드
- BackgroundSession
- URLSession.shared
- progress 처리
- uploadTask
- 비디오 업로드
- 멀티파트 데이터
- 갤러리 화면 만들기
- 갤러리 화면 UI
- 사진 첨부화면
- 인스타 사진 첨부
- 카카오톡 사진 첨부
- PHFetchResult
- switch case optional binding
- 테스트하는 방법
- ExprSyntax
- TokenSyntax
- literal interpolation
- Syntax를 이용하여 매크로 구현방법
- SwiftSyntaxBuilder
- SwiftSyntaxMacros
- externalMacro
- building syntax trees
- macro expansion
- macro expand
- 올바른 Macro 작성 방법
- Macro 구현 방법
- @attached(accessor)
- @attached(peer)
- @freestanding(declarationg)
- @freestanding(expression)
- Macro Role
- 데이터 교환
- 깃 히스토리 유지
- 파일 이동 방법
- Git move
- Actor and Concurrency
- C++ interop
- 애플이 Foundation을 공개한 이유
- repeat each 제네릭스
- type check 속도 향상
- 조건문이 표현식으로 변경
- Expand on Swift Macro
- swift 매크로
- ModelContext
- ModelContainer
- @Relationship
- @Attribute
- @Model
- 스위프트 데이터
- @Bindable
- @Row
- @Tab
- @TabNavigatior
- 스위프트 문서화
- Swift-DocC
- SwiftData
- StandBy 모드
- Content margin
- Bring widgets to new places
- Widgets 확장성
- Add SharePlay to your app
- 그룹 액티비티
- 쉐어 플레이
- GroupActivities
- any Hashable
- 페이저 뷰
- 네이버 웹툰 뷰
- 페이지 컨트롤러
- 네이버웹툰 레이아웃
- 스크롤 구분
- 사용자가 스크롤
- 하단 콘텐츠 스와이프하면 상단 탭도 스크롤되는 PagerView 구현 방법
- 함수 매개변수화하기
- 제어 플래그를 탈출문으로 바꾸기
- Special case Pattern
- 특이 케이스 패턴
- 특이 케이스 추가하기
- protocol 지향 프로그래밍
- protocol로 바꾸기
- swift에서 guard문의 의미
- 중첩 조건문을 보호 구문으로 바꾸기
- 브랜치 커버리지
- 조건 커버리지
- 라인 커버리지
- 코드 커버리지
- 셀 패딩
- 셀 마진
- cell inset
- separatorInset
- 프로토콜지향
- 데이터소스 반영 방법
- 조건문 분해하기
- #keyPath
- dynamic Objective-C API
- #Objective-C 런타임 라이브러리
- swizzling
- method_exchangeImplementations
- class_getInstanceMethod
- #selector
- Objective-C 런타임 라이브러리
- Delete 버튼
- .eventTracking
- .modal
- .tracking
- .common
- .default
- ios 17
- 값을 참조로 바꾸기
- 프로토콜 지향
- protocol 지향
- 편집모드 move 버그
- 편집모드 버그
- layoutIfNeeded와 setNeedsLayout 차이 알기
- layoutSubviews()
- viewDidLayoutSubviews()
- UIAccessibilityElement
- 컨테이너 뷰
- 그룹핑 방법
- 시뮬레이터 Accessibility 테스트
- VoiceOver 제스처
- Refactoring (Martin fowler)
- class가 아닌 struct가 좋은 이유
- Marting Flowler
- 데이터 조작화
- 변수 쪼개기
- 8-1. 데이터 조작화 (변수 쪼개기)
- arrangedSubviews
- git reset --soft
- git reset 디폴트
- git reset --mixed
- git 유용한 명령어
- git 특정 부분만 stage로 올리는 방법
- editingStyleForRowAt
- canEditRowAt
- 셀 삭제
- 셀 이동
- setTitleColor
- 현재 파일 내 검색
- // FIXME
- // TODO
- // MARK:
- NSRecursiveLock
- 프롬프트 이름 설정 방법
- Enum with raw type cannot have cases with arguments
- RawPresentable
- where Element ==
- where Element:
- where Self
- cannot conform to 'Hashable'
- 중간에 커밋 넣기
- git rebase interactive
- assets.xcassets
- contents.json
- 크래시 로그
- Crashlytics.crashlytics().log
- Craashlytics log
- 크래시리틱스
- moveRowAt
- 아이템 업데이트
- DiffableDataSource
- perform batch
- 인라인 코드를 함수 호출로 바꾸기
- adjustsFontSizeToFitWidth
- 볼드체 텍스트 활성화
- 시스템 설정 볼드
- 문장을 호출한 곳으로 옮기기
- 문장을 함수로 옮기기
- 필드옮기기
- UITransitionView
- 바텀시트(bottom sheet) 직접 구현하기
- UITransitionView 개념
- 팬모달
- PanModal
- 리모트 컨피그
- 파이어베이스 리포트 컨피그
- Firebase Remote Config
- FirebaseRemoteConfig
- launch screen 변경되지 않는 문제
- app icon 변경되지 않는 문제
- Library/SplashBoard
- collection downcast
- magic file name
- implicit self
- Xcode14.3
- optional generic
- @backDeployed
- 특정 브랜치 제외하고 모든 로컬 브랜치 삭제 방법
- Incremental Build System
- 빌드 과정
- 빌드 시스템
- 반복문을 파이프라인으로 바꾸기
- async를 순서대로 처리 방법
- SCNetworkReachabilityContext
- share(replay:)
- 조건부 로직을 다형성으로 바꾸기
- titleLabel
- interpolationQuality
- UIImage 리사이징
- UIButton의 imageView의 크기
- UIButton의 imageView
- 네트워크 연결 상태
- NetworkRechabilityManager
- 공통 컴포넌트 수정
- some 키워드
- Github 저작권 등록방법
- 레포 License 등록
- Xcode에서 단축키로 커밋하는 방법
- wait(timeout:)
- 스레드 락
- import문 알파벳 순으로 정렬 단축키
- Xcode Behaviors
- $plistbuddy
- 위임 숨기기
- select photos
- PhotosUI
- presentLimitedLibraryPicker
- Selection Feedback
- Notification Feedback
- Impact Feedback
- UIImpactFeedbackGenerator
- 레코드 캡슐화
- 클래스 추출하기
- 함수 선언 바꾸기
- 변수 인라인하기
- 변수 추출하기
- zero width space
- Workspace 단위로 나누는 방법
- Dependencies.swift
- 단계 쪼개기
- XCFramework 개념
- UIKit은 Static일까? Dynamic일까?
- Dynamic Frameework
- tuist fetch
- 참조를 값으로 바꾸기
- 파생 변수를 질의 함수로 바꾸기
- dynamic framework 생성 방법
- tuist graph
- 의존성 확인 방법
- tuist generate
- tuist init
- LookinServer
- view debugging tool
- 뷰 디버깅 툴
- 뷰 디버깅
- 룩인
- ViewBuilder
- UniformTypeIdentifiers
- Cartfile.resolved
- Task failed with exit code 70:
- 디펜던시 매니저
- coverVertical
- dim효과
- viewController 팝업 형태
- 아래에서 위로 올라오는 팝업 구현
- Storyboard와 Interface Builder 차이
- line spacing
- Storybaord
- Type Erasure
- scroll direction
- 스크롤 방향
- 카톡 푸시 썸네일
- INSendMessageIndent
- custom thumbnail
- custom app icon
- 커스텀 icon
- mutable-content
- Push notification 이미지 넣기
- 푸시 커스텀 UI
- Push Notification 테스트
- NWPusher
- 푸시 테스트
- 푸시를 이용한 백그라운드에서 업데이트 방법
- Pushing Background Update
- Silent Push Notification
- RocketSim
- 노티피케이션 테스트
- Push Notification Test
- 푸시 노티피케이션 테스트
- Slient Push Notification
- 레이아웃 성능
- 마스킹 방법
- 음영 효과
- Mirror(reflecting:)
- CustomTabBarController
- Custom TabBarController
- 커스텀 탭바 컨트롤러
- DispatchQueue.main vs RunLoop.main
- DispatchQueue.main와 RunLoop.main 차이
- RunLoop.main
- footer 영역
- FlaotingPanel
- 센터 스크롤
- 가운데로 스크롤
- 뷰의 tag
- contentEdgeInsets
- titleEdgeInsets
- imageEdgeInsets
- scrollRectToVisible
- 인셋
- adjustedContentInset
- Thumbnail 뷰
- 트위터 트윗함 뷰
- 썸네일 나열 뷰
- Twitter 썸네일 나열 뷰
- UI 성능 최적화 프로그래밍
- Commit Hitch
- canCancelContentTouches
- disable scroll
- 마지막 페이지
- Hitches
- Render Loop
- layout phase
- UI 디버그
- Low Level Debugger
- 디버깅 방법
- 메인 스케줄러
- MainScheduler.asyncInstance
- MainScheduler.instance
- lessThanOrEqualTo
- greaterThanOrEqualTo
- lessThan
- greaterThan
- UIStackView 레이아웃
- extension에 stored property
- 내장스크롤
- 이중 스크롤
- Nested Scroll
- 페이지 뷰컨
- 하단 스크롤 뷰
- 네이버웹툰 상단 뷰
- 네이버웹툰 수평 스크롤 뷰
- 지연 연산자
- conact
- 스크롤 시 상단에 뷰 붙이기
- StickyHeader
- 스티키 헤더
- nested scrollView
- ScrollView in ScrollView
- scrollViewDidScroll
- some View
- CATransitionType
- CATransition
- 스틱키
- UIControl.Event
- addTarget
- 액션 클로저
- fillEqually
- 커스텀 탭바
- custom tabbar
- 커트텀 버튼
- 클라이언트 코드
- Swift 기본 연산자
- animationDidStop
- animationDidStart
- CAAnimationDelegate
- 카운트 다운 버튼
- ProgressButton
- reloadRows(at:with:)
- 동적으로 늘어나는 셀 구현
- extendable tableView
- map 디코딩
- XCTest
- O0
- GCC_OPTIMIZATION_LEVEL
- Apple Clang
- @testable import
- ENABLE_TESTABILITY
- withRenderingMode
- UIImage Rendering Mode
- alwaysTemplate
- alwaysOriginal
- Xfrontend -warn-long-expression-type-checking
- Xfrontend -debug-time-function-bodies
- Xfrontend -debug-time-expression-type-checking
- Xfrontend
- OTHER_SWIFT_FLAGS ($Inherited)
- Valid Architectures
- excluded architecture ONLY_ACTIVE_ARCH
- EXCLUDED_ARCHS
- archs
- 빌드 세팅
- 싱글톤 패턴 주의 사항
- preconditionFailure
- Optimization Level
- fatalError
- assertFailure
- (Behavior Deriven Development)
- (BDD)
- @Injected
- Dependency Inject
- observe(on:)
- refreshable
- 디스크 캐싱
- AVPictureInPictureControllerDelegate
- Custom Queue
- Picture and Picture
- SwiftLint 옵션
- 스위프트린트
- 무한 스크롤 뷰
- Infinite Carousel
- nonisolated
- @MainActor
- UIView와 CALayer의 차이
- 뷰 자르기
- 네이버웹툰 상단
- 상단 애니메이션
- 스크롤 애니메이션
- Scroll 애니메이션
- 동적 테이블 뷰
- SelfSizing
- SelfSizingCollectionView
- SelfSizingTableView
- UIKit에서 다이나믹 아일랜드
- UIKit에서 Dynamic Island
- 문자열 regex
- closure 리턴 키워드 생략
- if let 옵셔널 바인딩
- assertNoFailure(_:file:line:)
- tryCatch(_:)
- catch(_:)
- do(onError:)
- Live Activit
- 완료 검증
- 구매 완료 검증
- 구매 완료
- SKReceiptRefreshRequest
- appStoreReceiptURL
- transaction 추적
- SKPaymentQueue
- SKProductsRequest
- SKProduct
- delaysContentTouches
- tryLast
- tryFirst
- Matching Operator
- tryAllSatisfy
- allSatisfy
- tryContains
- tryPrefix
- tryDrop
- Mathematical 연산자
- tryMin
- tryMax
- tryReduce
- ignoreOutput
- replaceEmpty(with:)
- tryRemoveDuplicates(by:)
- removeDuplicates
- tryCompactMap
- tryFilter
- Combinw
- trim(from:to:)
- .trim
- .redacated(reason: .placeholder)
- Redacted(reason:)
- Localization 지역화
- LocalizedStringKey
- LocaliedStringKey
- onPreferenceChange()
- preference(key:value:)
- 커스텀 EnvironmentValues
- .env.default
- fastlane match
- nonmutating set
- DynamicProperty
- FetchedResults
- FetchRequest
- .environmentObject()
- 뷰 간 데이터 공유 방법
- @ObjervedObject와 @StateObject 차이점
- Data flow
- (SwiftUI에서 UIKit 사용 방법
- UIKit에서 SwiftUI 사용 방법
- UIHostingController
- coordinateSpace(name:) 사용 방법
- coordinateSpace(name:)
- iOS Memory Deep Dive
- StateObject
- GeometryProxy
- 패턴 이미지
- 이미지를 격자 무늬로
- 이미지페인트
- ImagePaint 사용 방법
- TransformedShape
- OffsetShape
- RotatedShape
- ScaledShape
- Line Chart 그리는 방법 (주식 차트)
- addLine(to:)
- move(to:)
- (움직이는 애니메이션)
- GeometryEffect
- pinch 제스쳐
- rotationGesture
- git add -p
- custom shape
- inset(by:)
- InsettableShape
- capturedDidChangeNotification
- userDidTakeScreenshotNotification
- 녹화 감지 방법
- Recording - 캡쳐 감지 방법
- 캡쳐 감지 방법
- isSecureTextEntry
- 캡쳐 막는 방법
- 캡쳐 막기
- Prevent Recording
- asymmetric
- AnyTransition
- AnimatableData
- EmptyAnimatableData
- Animatable
- easeOut
- easeInOut
- easeIn
- open url
- 푸시 처리
- didFinishLaunchingWithOptions
- willPresent
- didReceive
- didReceiveRemoteNotification
- UITabBarController
- FittedGrid
- FittedGridView
- Sendable
- Invalid Siri Support
- AsyncImage
- scenePhase
- .sheet
- widgetURL
- API 데이터 로드
- 위젯 Cocoapods
- WidgetFamily
- 드래그 제스쳐
- 아래로 스와이프하여 뷰 dismiss하는 방법
- Swipe Down To Dismiss
- 뷰 이동 방법
- 뷰 드래그 방법
- URLSession.DataTaskPublisher
- Swiftui+MVVM
- PlainButtonStyle()
- navigationBarDrawer
- isSearching
- 네비게이션 바 검색 창
- redacted
- 줌 기능
- setFailureType
- tryScan
- replaceNil
- mapError
- tryMap
- delay(for:scheduler:)
- receive(on:)
- CIFilter
- PassthroughSubjec
- Combine의 Subscriber
- AnyPublisher
- objectWillChange
- ObservableObjectPublisher
- Combine과 RxSwift
- Combine 개념
- Combine 목차
- equatable()
- EqutableView
- EmptyView()
- EmptyView
- URLSessionWebSocketDelegate
- URLSessionWebSocketTask
- Base64 String
- 썸네일 테두리 회전
- TimerView
- progressiveJPEG
- .processor
- DataStorage
- WKWebsiteDataStore
- 지연된 생성자
- Export Method
- 빌드 옵션
- export_method
- private repo
- Path:
- .confirmationDialog
- .alert
- 그룹 박스
- thread explosion
- onInsert
- Hierarchical List
- ListStyle
- RoundedRectangle
- LazyZStack
- LazyHStack
- @unknown
- 스태퍼
- WKWebView 디버깅ㅇ
- 핸드폰 번호 정규식
- pickerStyle
- 커스텀 토글
- Custom Toggle
- ToggleStyle
- ThreadSafeArray
- iOS에서 스레드가 동작하는 방식
- 스레드세이프
- DispatchQueue Barrier
- await 구현방법
- pub-sub 패턴
- CompletableDeferred
- .ephemeral
- .provisional
- .notDetermined
- .denied
- .authorized
- Notification Push
- Build script
- PasteButton
- MenuButton
- EditButton
- PrimitiveButtonStyle
- scaleEffect
- Seirialize
- modular architecture
- ButtonStytle
- San Francisco 심볼
- scaledToFit
- font weight
- systemFont
- .focused
- TextFIeld Modifier
- .focused()
- baselineOffset
- strikethrough
- kerning
- View Protocol
- Network Link Conditioner
- WindowGroup
- @AppStorage
- Preferences 설정
- FocusedValues
- SidebarCommands
- CommandMenu
- 시간 연산자
- macOS 맥북 앱
- ZStack 개념
- 맥북 앱 UI 구현 방법
- Opaque Types
- iOS앱에 WatchOS 애플워치 구현
- iOS 앱에 애플워치 앱 추가
- WatchOS 애플워치 앱
- SwiftUI와 UIKit
- 환경 변수값
- toolbarItemGroup
- 달러 prefix
- 수평 스크롤 뷰 구현
- $inherited
- onTapGesture
- .navigationBarTitleDisplayMode
- .navigationBarTitleDisplayMode(.inline)
- navigationTitle
- ignoresSafeArea
- 이미지 커스텀 방법
- clipShape
- 동그란 이미지
- 커스텀 이미지 뷰
- resume 단축키
- PHFetchResult<PHAsset>
- 카메라 권한 요청
- 카메라 사용 방법
- PHCollectionList
- Photos 프레임워크
- Groupbox
- Wave Animation
- 웨이브 애니메이션
- Wave 애니메이션
- Floating Panel
- BottomSheet 구현 방법
- ThumbnailView
- 온라인 상태 뷰
- 포커스 영역
- 스크롤 영역
- Paging 구현
- 인스타그램 썸네일 프로필
- 앱 이름 지역화
- AppName Localization
- Reduce(into:)
- canEditRowAtIndexPath
- 스와이프하여 삭제
- swipe to delete
- Expression Pattern
- 표현 패턴
- 옵셔널 패턴
- DeepLink 모델링
- 딥링크 모델
- NavigationStack
- ApplicationState
- UIRemoteKeyboardWindow
- UIKeyboardWindowScene
- UITextEffectsWindow
- KyeWindow
- 네트워크 재시도
- Swift5.7
- but modification requires exclusive access
- Simultaneous accesses to
- Inset Grouped
- Embed Without Signing
- Frameworks Libraries and Embedded Content
- embeded Content
- XcodeGen
- lipo command
- CPU Architectures
- frameowrk
- XCFramework
- 작은 기기 대응
- 디바이스 대응
- Clamped
- custom indicator
- 커스텀 인디케이터
- Indiacator
- 레이아웃 업데이트
- UpdateConstraints
- SwiftyStoreKit
- 입앱 결제
- 앱 구독
- 메모리 처리
- endTracking
- continueTracking
- beginTracking
- 커스텀 슬라이더
- Custom Slider
- 커스텀 스윗치
- CollectionView in Cell
- UITableVIewCell 안에 CollectionView 넣기
- Roundable Button
- Cell 애니메이션 적용 방법
- highlighted 애니메이션 적용 방법
- view.layoutIfNeeded()
- atKeyPath
- setValue(_:forKey:)
- value(forKey:)
- Key Value Coding
- Multi cell
- PartialKeyPath
- AntyKeyPath
- 스프링 애니메이션
- initialSpringVelocity
- usingSpringWithDamping
- 커스텀 로딩
- 팝업 애니메이션
- UIWindow 개념
- custom loading
- PrefetchRow
- view layering
- isUserInteractionEnabled
- 뷰 레이어
- View Layer
- UIKit와 CALayer 차이
- autolayout과의 우선순위
- defaultHigh
- defaultLow
- ContentCompressionResistance
- ContentHugging
- 격자 뷰
- 그리드 뷰
- UICeollctionView
- 펄스 애니메이션
- Pulse Animation
- View Hierarchy
- UINavigationView
- swipe하여 뷰 넘기기
- 상호작용 애니메이션
- Interactive Animation
- UIViewPropertyAnimation
- Enum 초기화
- Local Noti
- Noti Push
- 로컬 노티
- UISegmentedControl 커스텀
- 세그먼트 컨트롤
- 리뷰 요청 팝업
- 리뷰 팝업
- 별점 팝업
- HorizontalScroll
- 스레드 관리
- AVAudioEngine
- NSLock()
- 클린 빌드
- Clean Build
- buttonStyle
- Timer UI
- allSatisfy()
- 유튜브 뮤직 앱 UI
- orthogonalScrollingBehavior
- visibleItemsInvalidationHandler
- NSCollectionLayoutAnchor
- NSCollectionLayoutDimension
- RTCDataChannel
- WebRTC 개념
- 컨트리뷰트
- contribute
- 웹뷰 통신
- native javascript
- RxWebKit
- rethrows
- memory allocation
- CALayer 애니메이션
- 테두리 회전 애니메이션
- 테두리 루핑
- borderColor animation
- axial
- Builder scheme
- CMTime
- snake_case
- AVFoundation 구조
- self sizing
- subview
- 하위 뷰
- 탭 제스쳐
- subviews
- 시트 뷰
- SheetView
- TopSheetView
- BottomSheetView
- UIPropertyAnimator
- touches 제스쳐
- touchesCancelled
- touchesMoved
- touchesBegin
- git submodule update
- github submodule
- xUnique
- 간결한 코드
- nonfrozen Enumeration
- frozen Enumeration
- Non Frozen
- NotificationView
- UIPercentDrivenInteractiveTransition
- 화면전환 애니메이션
- Transition Animation
- 트랜지션 애니메이션
- hash(into:)
- 바텀시트
- 메소드 스위즐링
- UINotificationFeedbackGenerator
- ArraySlice
- InAppMessaging
- 인앱 매세지
- InAppMessage
- 다수 애니메이션
- 단일 애니메이션
- Animation 테크닉
- AnyCancellable
- Cancellable
- 테이블 안 안의 수평 스크롤 뷰
- SupplementView
- 단일 Section
- $ 접두사
- 달러 접두사
- projectedValue
- Single Thread
- iOS 13+
- cornerCurve
- 네임 스페이스
- 웹뷰 디버깅
- Pull down to dismiss
- 아래로 당겨서 dismiss하기
- orThrow
- @aotoclosure
- aotoclosure
- 버튼 탭 애니메이션
- 링크 걸기
- dataDetectorTypes
- scrollIndicatorInsets
- textContainerInset
- URLEncoding
- addingPercentEncoding
- SpeechBubbleView
- BalloonView
- TipView
- 말풍선 뷰
- RawValue
- RawRepresentable
- App Icon Generator
- https://pixabay.com/ko/
- https://appicon.co/
- Call Directory Extension
- com.apple.CallKit.error.requesttransaction Code=2
- 구독 한번만 수행
- share(replay:scope:)
- KeyedCodable
- Layou
- Stretchy
- UITextView+Placeholder
- 엔터 버튼
- Done 버튼
- dividedBy
- CustomPopup
- 결합 연산자
- resignFirstResponder()
- becomeFirstResponder()
- Date 파싱
- Date 포맷
- Combine Operators
- 변경 연산자
- switch Operators
- amb()
- SkeletonView
- lineSpacing
- localizedDescription
- LocalizedError
- Device block
- DeviceCheck API
- DateDecodingStrategy
- KeyDecodingStrategy
- Decoder()
- 매초마다 실행
- RxTimer
- 스위즐링
- Method Swizzling
- RxTableView
- Do Not Embed
- keyframe
- ObservableConvitibleType
- 키 패스
- RxSwift6
- CurrentValueSubject
- logEvent()
- 비동기 프로그래밍
- async & await
- 연속적 권한 요청
- 커스텀 아이콘
- Observable Wrapping
- ATT 접근 권한
- 마이크 접근 권한
- Camera Permission
- 사진 권한
- Photo Permission
- RxCoreLocation
- Operation Queue
- Custom Operation
- BlockOperation
- NSOperation
- 리펙터링 예시
- ConcurrentDispatchQueueScheduler
- CurrentThreadScheduler
- MainSchreduler
- Result Builder
- 네트워킹 로깅
- Cauli
- 하단 버튼
- CFBundleShortVersionString
- CFBundleVersion
- TextField 입력 제한
- scan 연사나
- 키보드 높이
- RxKeyboard
- Rx Operator
- timeout 에러처리
- Dynamic Dispatch
- Static Dispatch
- Witness Table
- addKeyframe
- animateKeyframes
- switch-case
- RxOperator
- 정렬 CollectionView
- CollectionViewCell 정렬
- AlignedCollectionViewFlowLayout
- PrefetchItems
- 멀티 디바이스 대응
- armv7
- Univeral App
- Cocoapods 빌드 속도
- Indexing 속도
- 코드 스니펫
- 동적 사이즈 셀
- 가로 슬라이드
- SliderCollectionView
- use_frameworks!
- Networking Layer
- Moya/RxSwift
- RxMoya
- OperationQeueu
- \.
- 이미지캐시
- swiftgen.yml
- json decoding
- Failed to build with SPM 오류 해결
- 패키지 관리 도구
- GitHug Action
- Cannot install under Rosetta 2 in ARM default prefix
- pbxproj
- RxTableViewSectionedReloadDataSource
- dynamic width
- dynamic custom view
- ReactorKir
- 로버트 C.마틴
- 4가지의 클린 코드 규칙
- CircularTimerView
- CircularProgressBar
- Background 타이머
- DispatchSource
- Unix Time Stamp
- dateAndTime
- 데이트 피커
- Firebase Firestore
- 버튼 애니메이션
- rotationEffect
- Permission Denied 400 error
- FirebaseFirestore
- FirebaseAuth
- Firebase Storage
- 이메일로 로그인하기
- 이메일 인증 링크
- Dyanamic Link
- 동적 링크
- Firebase Authentication
- Firebase 로그인
- 로그인 화면 전환 설계 방법
- 학습 테스트
- 소프트웨어의 경계
- 커스텀 템플릿
- Custom File Template
- 파일 템플릿
- File Template
- 코코아 팟
- 비야네 스트롭스트룹
- 론 제프리스
- WKUserScript
- 비트라이즈
- 자동 배포
- configuratino
- Chatting UI
- barrier flag
- 이미지 캐시
- UIProgressView
- Sheet Drawer
- UISheetPresentationController
- 스크롤 이동
- Cold Observable
- Hot Observable
- API 호출
- 점 세 개 메뉴
- UIAction
- scrollViewWillEndDragging
- up/down scroll
- 네트워크 로그
- EventMonitor
- AuthenticationInterceptor
- AuthenticationCredential
- 토큰 갱신
- TargetType
- Alaomfire
- RequestInterceptor
- RequestAdapter
- Status bar tint color
- DateFormatter()
- UITabBar.appearance()
- UINavigationBar.appearance().backgroundColor
- AppAppearance
- 공유하기 기능
- 다이나믹 링크
- Server Provider
- Remove Push
- ReplaySubejct
- [String: Any]
- UICollectionViewDiffableDataSource
- SectionIdentifierType
- ItemIdentifierType
- UITableViewDiffableDataSource
- tableView paging
- NeworkService
- ViewModelAction
- 코디네이터 패턴
- 의존 역전 원칙
- ISP(Interface Segregation Principle)
- 리스코프 치환
- 코드로 알아보는
- moveSection
- deleteSections
- insertSections
- moveRow
- URL URI 차이
- custom alert view
- 앱스토어 업데이트
- Attempt to insert non-property list object
- UserDefaultsManager
- UserDefauls
- Byte buffer
- 캐시와 쿠키의 차이
- 동적 높이
- beginUpdates()
- 셀프 리사이징 셀
- flexible cell
- 뒤로가기 버튼
- setBackIndicatorImage
- 커스텀 NavigationController
- BaseNavigationController
- Scalable Vector Graphic
- 터치 영역
- touch 영역
- 참조 카운트의 이해
- 이벤트 수신 방법
- 화면 간 데이터 전달
- UINavigationBarAppearance
- private(set)
- view.endEditing(true)
- inputAccessoryView
- 키보드 위 버튼
- newString
- textField(_:shouldChangeCharactersIn:replacementString:):
- registerUndo(withTarget:handler:)
- UndoManager
- 컬러 셋
- TurfSwiftBuffer
- 현재 보여지는 화면
- viewIfLoaded?.window
- viewIfLoaded
- maxXEdge
- 사각형 슬라이스
- divided(atDistance:from:)
- deleteItem
- moveItem
- insertItem
- performBatchUpdates(_:completion:)
- 화면 녹화 방지
- largeTitleDisplayMode
- LargeTitle(글자 크기)
- barTintColor
- tintColor
- layoutMargins
- colorset
- navigationItem.searchController
- allowsMultipleSelection
- 멀티 선택
- register_devices
- CGContext
- UIImage 회전
- sharePlay
- Enttiy
- API 통신
- case .none
- Optional Unwrapping
- 이미지 로딩
- 맥앱
- setSelected
- cell 선택
- frame.inset
- contentView.frame
- Cell 간 간격
- layer.shadowRadius
- layer.shadowOpacity
- layer.shadowOffset
- layer.shadowColor
- layer.borderWidth
- layer.shadow
- remote notification
- URLSessionTask
- 함수 리펙토링
- 퀵 헬프 주석
- UIView to UIImage
- UIView를 Image로
- asImage
- 동적 뷰
- content size
- UILabel 크기를 텍스트에
- intinsicContentSize
- sizeThatFits()
- sizeToFit()
- operator method
- 연산자 재정의
- Designated
- fileprivate
- Auto Reference Count
- 사용자 정의 연산자
- ci cd
- 질의함수
- RatingView
- RateView
- 스위프트 공식문서
- 동적 cell
- GradientView
- Nested Type
- rightView
- leftView
- SearchTextField
- programmtically
- Type 확인
- didMove(toParent):
- 테스트 구조
- rounded shadow button
- unavailable)
- @available(*
- @available
- remakeConstraint
- updateConstraint
- 코드로 xib파일을 얻는 Protocol
- xib파일 코드
- StoryboardInstantiable
- 글리프
- Deinitialization
- 수동 업로드
- pod cache clean --all
- rm -rf Pods
- rm -rf ~/.cocoapods/repos/trunk/
- pod update
- SPEC CHECKSUMS
- guard let self = self
- Component Cohesion
- 코드에서 이미지 확인
- 의존성 역전
- Dependency Rule
- App Clips
- Air Play
- UISearchController
- SceneDelegate 삭제
- storyboard 삭제
- Main.storyboard 삭제
- Backtic
- Closure Expression
- print(_:separator:terminator)
- Liskov Substitution
- if #available
- segment control
- statusBarHeight
- Pull-Down menu
- Open Closed Principle
- Open Close Principle
- Progress Indicators
- super.init
- public private(set)
- Open-Closed
- Single Responsibility
- Type Aliases
- type property
- observer property
- Context Menus
- tableView style
- Add Contact Buttons (연락처 추가 버튼)
- Detail Disclosure Buttons
- 시스템 버튼
- Identity Operator
- Archive(아카이브)
- Tab bar
- Linked List 출력
- upperbound
- Scope bar
- Search Bars
- Build input file cannot be found: ... info.plist
- Navigation bar control
- System Icon
- @3x
- @1x
- Dynamic Type Sizes
- Accessibility Inspector
- 특수문자 코드
- Variadic Parameter
- Vibrancy
- UIVibrancyEffectStyle
- NSUnknownKeyException
- coding-compliant for the key
- git reset --hard
- dynamic system color
- system color
- SKProductsRequestDelegate
- SKPaymentTransactionObserver
- Done버튼
- Retrun
- Human Interface Guidelines
- WebKit View
- 표준 제스처
- ₩
- 앱 추적 투명성
- AppTrackingTransparency
- dragdrop
- PageController