일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift documentation
- Refactoring
- Observable
- rxswift
- ios
- ribs
- swiftUI
- uitableview
- SWIFT
- Xcode
- uiscrollview
- 스위프트
- HIG
- 리팩토링
- Human interface guide
- 리펙토링
- UITextView
- MVVM
- 애니메이션
- map
- RxCocoa
- clean architecture
- Protocol
- Clean Code
- combine
- UICollectionView
- tableView
- 클린 코드
- collectionview
- 리펙터링
- Today
- Total
목록iOS 응용 (swift) (724)
김종권의 iOS 앱 개발 알아가기
네임스페이스 정의 방법 nested-type으로 여러 타입을 지정하고 싶은 경우, 보통 아래처럼 class타입 안에 class로 지정하는 경우가 있지만 이렇게 되면 DesignSystem1이라는 클래스 안에 여러가지의 nested-class가 많아지는 구조로 번식 또 DesignSystem1은 class타입이므로 불필요한 생성자가 존재 public class DesignSystem1 { public class RadioButton { } } 단순히 namespace만 관리할 목적이고 생성자가 필요 없으므로 enum을 활용 // DesignSystem.swift public enum DesignSystem { public class RadioButton { } } 또한 namespace를 정의할 때는 위처..
Custom View 구현 시 프로토콜을 사용하면 좋은 이유 보통 커스텀 뷰를 구현하면 사용하는쪽에서 가져다 쓰는데, 사용하는곳이 여러곳이면 이 커스텀 뷰를 수정할때 여러곳을 고려해야하여 수정이 어려움이 존재 프로토콜을 사용한다면? 구현체의 의존성을 사용하는쪽에 두지 않는것이 가장 큰 의미, DIP(Dependency Inversion Principle) 사용하는쪽에서는 Interface에만 의존하고 있기 때문에 구현체에 여러가지 변화를 주더라도 유연한 구조 유지가 가능 ex) 커스텀 뷰가 공통 뷰이고 이 뷰가 Swift에서 SwiftUI로 넘어갈 때 역시도 protocol로만 외부에게 노출했으면 유연하게 수정이 가능 protocol로 커스텀 뷰 구현하기 커스텀 버튼을 만든다고 했을 때, UIView로 ..
1. 메모리 프로파일링 - VM Tracker 사용 방법 (#Instrument) 2. 메모리 프로파일링 - VM Tracker을 사용하여 메모리 프로파일링하기 (resident size, dirty size, swapped size, virtual size) VM Tracker에서 메모리 살펴보기 resident, dirty, swapped, virutal을 확인하여 메모리 상태 확인이 가능 resident size: 실제로 RAM에 올라와서 현재 사용되고 있는 데이터의 크기 dirty size: RAM에 올라온 것 중에 데이터의 변경이 일어나서, page out될 수 없는 페이지의 크기 swapped: RAM disk 페이지 변경된 크기 (자세한 residen size, dirty size, swap..
CAAnimationGroup 개념 이름 그대로 동시에 여러가지의 CAAnimation을 적용하고 싶은 경우, group으로 묶어서 실행되게끔 할 수 있는데 이때 사용하는게 CAAnimationGroup CAAnmationGroup 사용방법 직관적으로 CABasicAnimation들을 group에 넣고 이 group을 뷰의 layer에 add해주면 완성 파란색 뷰 준비 final class CircleView: UIView { override func layoutSubviews() { super.layoutSubviews() clipsToBounds = true layer.cornerRadius = frame.height / 2 } } class ViewController: UIViewController..
1. 메모리 프로파일링 - VM Tracker 사용 방법 (#Instrument) 2. 메모리 프로파일링 - VM Tracker을 사용하여 메모리 프로파일링하기 (resident size, dirty size, swapped size, virtual size VM Tracker란? Virutal Memory Tracker라는 의미로, XCode에서 Instrument 중 메모리 할당에 관한 프로파일링 기법 중 하나 VM Tracker를 이용하면 resident size, dirty size, swapped size, virtual size를 분석 할 수 있는데, 이렇게 각 size별로 볼 수 있어서 더욱 디테일하게 메모리 프로파일링이 가능 residen size, dirty size, swapped si..
virtual memory 개념 운영체제에서의 가상메모리를 의미 하드웨어 RAM (맥북에서의 16G 등)을 물리적 RAM이라고 한다면, 이 16G의 부족한 공간을 위해서 디스크 공간도 같이 사용하는 방법 process가 계산을 하다가 메모리에서 데이터를 찾는데, 이 때 virtual memory라는것을 두고 virutal memory에서는 RAM과 disk공간을 바라보는 것 virtual memory 부분을 적절한 단위로 나누는데, 그것을 page라고 명칭 중요한 용어 page out: physical메모리에 page에 대응하는 데이터가 없어서, physical메모리에 있는 어느 한 page와 disk에 있는 page랑 swap해야하는데, 이 때 physical memory에서 사용하지 않은 공간을 내준..
* 가장 기초) iOS 메모리 기초 개념 - virtual memory, dirty memory, clean memory, compressed memory, swapped memory 이해하기 포스팅 글 1. memgraph 메모리 프로파일링 - 샘플 준비 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기 3. memgraph 메모리 프로파일링 - 메모리 주소로 코드 역추적하기 (malloc_history , Malloc Stack Logging) malloc_history로 코드 역추적하기 malloc_history를 사용하면 참조 타입 인스턴스들이 할당된 코드를 역추적이 가능 단, memgraph를 얻어올때 Xcode에서 "Malloc Stack..
* 가장 기초) iOS 메모리 기초 개념 - virtual memory, dirty memory, clean memory, compressed memory, swapped memory 이해하기 포스팅 글 1. memgraph 메모리 프로파일링 - 샘플 준비 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기 3. memgraph 메모리 프로파일링 - 메모리 주소로 코드 역추적하기 vmmap으로 memgraph파일 분석 .mamgraph 파일은 이전 포스팅 글 참고 분석 목적: 큰 메모리를 잡아먹는 곳의 메모리를 분석하여 역으로 어떤 코드 부분인지 파악하는 것 vmmap --summary ExImageOptimazationBackground\[23907..