일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙토링
- uitableview
- Observable
- 클린 코드
- ios
- SWIFT
- HIG
- combine
- uiscrollview
- Protocol
- MVVM
- Refactoring
- 리팩토링
- 애니메이션
- 스위프트
- collectionview
- UICollectionView
- Human interface guide
- 리펙터링
- UITextView
- Clean Code
- clean architecture
- RxCocoa
- rxswift
- Xcode
- tableView
- swiftUI
- map
- ribs
- swift documentation
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uipVc/btsCN6JW79G/oQd9xmA3vCHOpfLgJkJDhk/img.png)
Custom View 구현 시 프로토콜을 사용하면 좋은 이유 보통 커스텀 뷰를 구현하면 사용하는쪽에서 가져다 쓰는데, 사용하는곳이 여러곳이면 이 커스텀 뷰를 수정할때 여러곳을 고려해야하여 수정이 어려움이 존재 프로토콜을 사용한다면? 구현체의 의존성을 사용하는쪽에 두지 않는것이 가장 큰 의미, DIP(Dependency Inversion Principle) 사용하는쪽에서는 Interface에만 의존하고 있기 때문에 구현체에 여러가지 변화를 주더라도 유연한 구조 유지가 가능 ex) 커스텀 뷰가 공통 뷰이고 이 뷰가 Swift에서 SwiftUI로 넘어갈 때 역시도 protocol로만 외부에게 노출했으면 유연하게 수정이 가능 protocol로 커스텀 뷰 구현하기 커스텀 버튼을 만든다고 했을 때, UIView로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cohTvW/btsCJkOJgjP/k0PA31Xjue4MKJGSz9kGD1/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ckkKqU/btsCN4YRX7v/r8PoMI2D4e8zYDnzG8nUEk/img.gif)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUnTg1/btsCQ5oNvMX/jLEB0wUGZkapWfkGkUpAgk/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cRRGT0/btsCLphCpLe/uza3Cosn2XmIVKiOZkiYRk/img.gif)
* 이미지를 이용한 방법은 이전 포스팅 글 참고 구현 아이디어 UIBezierPath를 통해서 동그란 layer 그리기 layer의 lineWith를 1보다 크게하여 테두리를 만들고 이 테두리의 색상(strokeColor)은 blue, 내부에 채워지는 색상(fillColor)은 clear로 설정 테두리가 꽉차 있으면 안되고 중간이 뚫려 있어야 하므로 strokeStart를 0.2정도로 설정하여 20%는 비어지도록 설정 이 뷰를 CABasicAnimation의 transform.rotation을 사용하여 효과를 주면 완성 구현 LoadingView 정의 final class LoadingView: UIView { init() { super.init(frame: .init(origin: .zero, size..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vrTPJ/btsCDe0qCWx/KsKs1YkNfWXTSRZZgMdFJ1/img.png)
* 가장 기초) 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ArcEb/btsCw9tluDR/GwbP7qePoKNKIY828xpZ41/img.png)
* 가장 기초) 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clGhYj/btsCwSyuHf4/G4PADbXwH0SahW2bgVj8KK/img.png)
* 가장 기초) iOS 메모리 기초 개념 - virtual memory, dirty memory, clean memory, compressed memory, swapped memory 이해하기 포스팅 글 1. memgraph 메모리 프로파일링 - 샘플 준비 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기 3. memgraph 메모리 프로파일링 - 메모리 주소로 코드 역추적하기 프로파일링 대상 샘플 앱 이미지 10000개를 리사이징하여 UIImageView에 넣는 코드 리사이징에서는 비효율적인 ImageContext 방법 사용 (이미지 리사이징 최적화 관련 개념은 이전 포스팅 글 참고) class ViewController: UIViewControl..