일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HIG
- 리팩토링
- 애니메이션
- Refactoring
- 리펙토링
- Protocol
- uiscrollview
- combine
- ribs
- UITextView
- swiftUI
- 스위프트
- Human interface guide
- RxCocoa
- Observable
- swift documentation
- rxswift
- collectionview
- ios
- SWIFT
- 리펙터링
- tableView
- Clean Code
- map
- uitableview
- 클린 코드
- UICollectionView
- MVVM
- clean architecture
- Xcode
- Today
- Total
목록iOS 기본 (swift) (149)
김종권의 iOS 앱 개발 알아가기
코드 실행아래와 같이 viewDidAppear에서 a()함수가 실행되면 출력되는 값은?"a" -> "b" -> "c" -> "deinit" 일까?class VC: UIViewController { deinit { print("deinit") } override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemBlue } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) a() } func a() { prin..
지역화 적용 Strings 파일 추가 Strings 파일 > 아래 이름으로 추가 InfoPlist.strings 아래처럼 기존에 지역화를 이미 활성화 했다면, 다시 InfoPlist.strings 파일 클릭 만약 지역화 활성화가 안되어있다면 + 버튼을 클릭하여 지역화 사용 오른쪽 네비게이터에서 Localize 클릭 English 선택 Localization이 생성된것을 확인 Korea도 체크 InfoPlist.strings 하위에 2개의 파일이 생긴것을 확인 key - value쌍과 세미콜론으로 앱 이름 지역화 사용 (Korea) "CFBundleDisplayName" = "카운트 기록"; "CFBundleName" = "카운트 기록"; (English) "CFBundleDisplayName" = "Ta..
고차함수 (Higher order function) 인수로 함수를 받는다 or 함수를 결과로 반환한다 func myFunc(argFunc: Void -> ()) -> someFunc { } 고차함수를 사용하면 유연하고 반복을 줄일 수 있는 장점이 존재하여, Collection 관련 연산을 할때 되도록 고차함수 사용을 지향 swift의 대표적인 고차함수 인수로 함수를 받는 형태 대표적인 4가지 sorted func sorted(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> [Element] filter func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Elem..
패턴 매칭) 많이 사용하는 익숙한 패턴 1) 바인딩 let age = (20, 34) switch age { case let (a1, a2): print("\(a1), \(a2)") default: break } 2) 와일드 카드 switch age { case let (a1, _): // '_' 와일드 카드 패턴 print("\(a1), \(a2)") default: break } 3) 튜플 let (v1, v2) = (1, 2) print(v1) print(v2) 4) enum enum MyEnum { case a(Int) case b } let myEnum = MyEnum.a(10) if case let a(int) = myEnum { print(int) } 패턴 매칭) 익숙하지 않은 패턴 1) 옵..
Xcode에서의 Target Project나 Workspace의 파일들을 Build하여 생성되는 End Product를 의미 Xcode에서의 Project 모든 파일, 리소스를 빌드하는데 필요한 정보의 저장소 (repository) 프로젝트는 빌드하는 방법을 명시하는 end product인 target을 하나 이상 포함 Project가 가지고 있는 정보 소스파일에 대한 참조 structure navigator에서 소스파일을 그룹화 Debug, Release와 같은 build configuration을 설정 가능 .xcodeproj라는 디렉토리에 터미널을 통해서 들어가면 아래와 같은 정보가 존재 project.pbxproj - 각 파일들의 참조값들을 UUID들로 정의되어 있는 파일 cd {projectNa..
Comparable 해당 프로토콜을 준수하면 등호, 부등호 연산자 기능을 사용할 수 있도록 하는 것 Comparable은 내부적으로 Equtable을 준수 Equtable 프로토콜은 == 연산자를 위한 프로토콜이며 개념은 이전 포스팅 글 참고 // Swift.Misk public protocol Comparable : Equatable { static func Bool static func Bool static func >= (lhs: Self, rhs: Self) -> Bool static func > (lhs: Self, rhs: Self) -> Bool } Comparable 사용 예 내부적으로 Date가 Comprable을 준수하고 있지만 아래처럼..
UIView에는 updateConstraints(), layoutSubviews(), draw(_:) 메소드가 존재 3가지를 이해하려면 아래 뷰가 그려지는 원리를 이해하는게 필요 import UIKit final class MyView: UIView { override func updateConstraints() { super.updateConstraints() print("updateConstraints()") } override func layoutSubviews() { super.layoutSubviews() print("layoutSubviews()") } override func draw(_ rect: CGRect) { super.draw(rect) print("draw(rect:)") } } ..
value type, reference type swift에는 2가지 타입이 존재 value type: struct, enum, collection, 기본타입(Int Double, Bool ...) reference type: class, function, closure 두 타입의 차이 - copying value tpye - 카피할때 데이터의 복사본을 생성 reference type - shared instance를 생성하여 같은 인스턴스를 바라보는 참조값을 생성 cf) value type을 사용하면, thread간 의도하지 않은 공유로부터 안전한 프로그래밍이 되어, 로버트 C. 마틴의 클린 코드에서 얘기하는 functional programming 핵심은 데이터의 불변성에 도움 메모리 공간 할당 일반..