일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- rxswift
- 애니메이션
- clean architecture
- swiftUI
- tableView
- HIG
- collectionview
- Observable
- swift documentation
- ios
- 리펙토링
- uiscrollview
- UICollectionView
- Protocol
- combine
- UITextView
- MVVM
- Xcode
- Human interface guide
- 스위프트
- ribs
- RxCocoa
- Refactoring
- map
- uitableview
- SWIFT
- 클린 코드
- 리팩토링
- Clean Code
- Today
- Total
목록iOS 기본 (swift) (149)
김종권의 iOS 앱 개발 알아가기
DispatchQueue 개념 Thread pool을 thread safe하게 관리하는 객체 멀티 스레드에서도 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 발생하지 않는 것 Thread를 다루는 GCD(Grand Central Dispatch) 중 하나 DispatchQueue의 종류 3가지 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userI..
URI vs URL 개념 URI(Uniform Resource Identifier): 특정 리소스 식별자 URL(Uniform Resource Location): 특정 리소스 위치 URI 방법 중 하나가 URL 위 그림에서 1번은 특정 리소스의 식별자 자체를 의미하므로 URI, 2번은 파일의 위치를 가리키므로 URL swift에서 URL을 사용하는 예 이때 리소스가 HTML인 경우 - URLSession let defaultSession = URLSession(configuration: .default) guard let url = URL(string: "\(resource)") else { print("URL is nil") return } // Request let request = URLReques..
대표적인 ContainerView를 사용하여 ViewController 관리하는 클래스 navigationController TabBarController PageViewController ContainerView에 ContentViewController 추가 및 삭제 추가 private func addContentsView() { addChild(contentTableView) contentTableView.view.frame = containerView.frame containerView.addSubview(contentTableView.view) contentTableView.didMove(toParent: self) } 삭제 @objc private func removeContentsView() ..
ARC의 기본 개념 참고 참조 카운트 확인 방법 CGFGetRetainCount(object)를 사용하여 확인 // ex) print(CFGetRetainCount(obejct1)) // 2 print(CFGetRetainCount(obejct1.property1)) // 2 print(CFGetRetainCount(obejct2)) // 2 obejct1.property1 = object2 print(CFGetRetainCount(obejct1)) // 2 print(CFGetRetainCount(obejct1.property1)) // 3 print(CFGetRetainCount(obejct2)) // 3 참조 카운트가 증가하는 구체적인 상황 참초 가운트 테스트를 위한 클래스 정의 protocol A..
스위프트의 private(set) 키워드 private(set)을 쓰지 않고 외부에서 읽기만 가능하고 내부에서만 수정이 가능하도록 하는 코드 public class Data { private var _id: String public var id: String { get { return _id } set { return _id = id } } } private(set) 사용 public class Person { internal private(set) var id: String } internal은 생략해도 무방 읽기는 internal, 쓰기는 private으로 접근 제한이 정의된 프로퍼티 id public class Person { private(set) var id: String }
알아야 하는 기본 개념 Range NSRange 문자열 처리 메소드 .trimmingCharacters(In: .whitespacesAndNewlines), .replaceingCharacters(in:with:) Range half-open의 범위를 나타내고 있는 구조체 Range는 lowerBound, upperBound프로퍼티가 존재 "1..
ColorSet 생성 방법 Assets.xcassets 파일 오픈 > New Color Set Any Appearance나 Dark Appearance 클릭 > 오른쪽에 Color Set 창 확인 Appearances 설정: 간략히 하기 위해 Dark mode 사용하지 않는 None 옵션 선택 RBG로 사용하기 위한 설정: Color > Input Method > 8-bit (0-255) 선택 이름도 변경 "pirimary" 여러개 생성 사용하는 쪽에서 편리하게 사용 방법 extension을 사용하여 static computed property로 정의 extension UIColor { /// Primary ColorSet /// /// Primary color - (100, 149, 237, 100%)..
사각형을 자르고 싶은 경우, divided(atDistance:from:) 사용 from의 좌표로 부터 adDistance 떨어진 것으로 사각형 slice 하나의 사각형(CGRect)을 두 개의 사각형(CGRect)로 slice하는 코드 Rect객체에서 divided(atDistance:from:)을 사용 // .minXEdge 의미: x좌표의 시작점을 기준으로 30의 길이로 slice let slices = originRect.divided(atDistance: 30.0, from: .minXEdge) let slicedRect = slices.slice let remainderRect = slices.remainder sliceView.frame = slices.slice remainderView.f..