일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- clean architecture
- Refactoring
- uiscrollview
- UITextView
- Clean Code
- swift documentation
- swiftUI
- Observable
- uitableview
- 리펙토링
- map
- ios
- SWIFT
- Human interface guide
- collectionview
- rxswift
- MVVM
- Protocol
- 스위프트
- Xcode
- RxCocoa
- 애니메이션
- 클린 코드
- 리팩토링
- combine
- ribs
- tableView
- UICollectionView
- HIG
- Today
- Total
목록분류 전체보기 (1640)
김종권의 iOS 앱 개발 알아가기
* 가장 기초) iOS 메모리 기초 개념 - virtual memory, dirty memory, clean memory, compressed memory, swapped memory 이해하기 포스팅 글 1. memgraph 메모리 프로파일링 - 샘플 준비 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기 3. memgraph 메모리 프로파일링 - 메모리 주소로 코드 역추적하기 프로파일링 대상 샘플 앱 이미지 10000개를 리사이징하여 UIImageView에 넣는 코드 리사이징에서는 비효율적인 ImageContext 방법 사용 (이미지 리사이징 최적화 관련 개념은 이전 포스팅 글 참고) class ViewController: UIViewControl..
Dictionary 초기화 시 주의사항 dictionary: key - value 쌍으로 데이터를 저장할 수 있는 형태 dictionary 값을 초기화하는 방법에 대해서 명확히 알고 있어야 사용할때 혼동이 생기지 않음 초기화 방법 key-value 모두 날리고 싶은 경우 dictinoary 대괄호 안에 key값을 넣고, 오른쪽에 nil을 대입 var dict: [Int: String?] = [1: "1", 2: "2", 3: "3"] dict[1] = nil // [2: Optional("2"), 3: Optional("3")] or removeValue(forKey:) 사용 var dict: [Int: String?] = [1: "1", 2: "2", 3: "3"] dict.removeValue(for..
UIPinchGestureRecognizer 개념 애플에서는 pinch이라는 단어는 일반적으로 사용자가 "줌"하는 행위를 의미 UIPinchGestureRecognizer를 사용하여 줌 기능 적용이 가능 줌기능 (Pinching) 구현 파란색 뷰 준비 import UIKit class ViewController: UIViewController { private let blueView = { let view = UIView() view.backgroundColor = .blue view.translatesAutoresizingMaskIntoConstraints = false return view }() override func viewDidLoad() { super.viewDidLoad() view.add..
Xcode-select 개념 Xcode는 iOS앱을 개발할 수 있는 IDE이며, 이 개발 환경 도구는 여러가지 버전이 존재 xcode-select 명령어를 사용하면 Xcode 버전 관리를 선택적으로 가능 xcode-select-p를 실행하면 현재 (디폴트로) 적용되어 있는 Xcode 경로 출력 다른 Xcode를 사용하려면, xcode-select -s 사용 xcode-select -s Xcodes Xcodes는 Xcode들을 관리해주는데 UI를 제공해주는 툴 https://www.xcodes.app/ 에서 다운로드 수행 Download Xcodes 선택 github 페이지가 열리면 가장 하단으로 스크롤 후 Xcodes.zip 선택하여 다운로드 알집 해제 후 실행 여러가지 Xcode 버전들이 있고 버전 업..
LazySequence 개념 배열에서 특정 연산이 요청될 때까지 값을 계산하지 않고 지연시키는 데 사용 map, filter, reduce에서 값을 구하고자할때 값을 계산하여 바로 가져오지 않고, 계산이 필요하다는것만 저장해놓는 상태 (=lazy 상태) ex) map은 호출 즉시 수행되어 변환된 배열이 반환되지만 LazySequence를 사용하면 해당 변환은 요청이 있을 때까지 실제로 수행되지 않음 ex11) LazySequence 간단 사용 케이스 func ex1() { // LazySequence 사용 x let numbers = [1, 2, 3, 4, 5] let mappedValues = numbers.map { $0 * 2 } // LazySequence를 사용 o let lazyMappedVa..
* iOS 메모리 기초 개념은 Memory Deep Dive 포스팅 글 참고 기본 지식) 이미지의 중요한 요소 - 해상도 이미지를 다룰때 중요한 것은 파일의 크기(volume)가 아닌 이미지의 크기(resolution)이라는 점을 알 것 이미지를 구성하고 있는 pixcel관점에서, 1pixel을 이룰 때 RGB요소에 의해 각 1byte씩 3개가 필요하므로 3byte가 필요 여기에다 alpha 채널까지 합하면 1pixel당 4byte가 필요 만약 크기가 2048px * 1536px 의 이미지 파일 크기가 590KB가 디스크에 있을 때, 이 파일을 뷰에 표현할때는 약 10mb가 필요 (2048px * 1536px * 4byte) UIImage 관리 - 이미지를 메모리에 잡고 있지 말 것 UIImage는 위에..
1. VoiceOver 접근성 실전 - 개발 시작하기 (손쉬운 사용 단축키, Accessibility Inspector, 테스트) 2. VoiceOver 접근성 실전 - 개념 (isAccessibilityElement, accessibilityTraits, accessibilityLabel, accessibilityHint, accessibilityValue, accessibilityElements) 3. VoiceOver 접근성 실전 - 접근성 처리 (순서 처리, 이미지 인식, accessibility label, value, traits, hint 사용) 4. VoiceOver 접근성 실전 - UIAccessibility Notification (post, 노티) 5. VoiceOver 접근성 실전 ..
예외처리 throw를 하고 사용하는쪽에서 try - catch하는 예외처리를 모르는 개발자는 없지만 예외처리를 잘 활용하는 방법을 깨닫는것도 중요 swift에서 보통 메서드를 작성하다가 특정 상황에서는 guard문을 사용한다거나 if문을 사용하여 특정 부분에서만 동작하도록 하는 것이 대부분 예외처리의 중요성 확장성 증가 보통 메서드나 함수를 작성할 때 특정 기능이 필요해서 만드는데, 이렇게 되면 메서드 내부에서 예외적인 사항들을 guard문이나 if문으로 처리하는데 이렇게 처리하게 된다면 특정 상황에서만 사용할 수 있는 코드로 존재 ex) 인수로 들어오는 view의 subview들을 대상으로 UIStackView의 색상을 추출해내는 함수 func getStackViewColor(parentView: UI..