일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- clean architecture
- collectionview
- RxCocoa
- rxswift
- Xcode
- 리팩토링
- 스위프트
- 리펙토링
- Refactoring
- UITextView
- 클린 코드
- Clean Code
- Protocol
- 리펙터링
- HIG
- ribs
- swiftUI
- 애니메이션
- tableView
- map
- ios
- Observable
- swift documentation
- combine
- UICollectionView
- uiscrollview
- uitableview
- MVVM
- Human interface guide
- Today
- Total
목록iOS 기본 (swift) (149)
김종권의 iOS 앱 개발 알아가기
Result 타입 성공과 실패에 대한 결과값을 반환하고 싶은 경우 사용 Result 타입은 enum이며 두 개의 제네릭한 결과를 리턴하는 것이며, Failure 제네릭은 Error를 상속받은 타입이어야 함 Success는 Value type인 (Void, String, Int)등을 사용하도 되지만 Failure는 Error를 상속받은 자료형으로 채워주어야 가능 Result 타입 사용 Success 타입 정의 (옵셔널) struct Response { let message: String = "success!" } Failure 타입 정의 (필수) enum MyErrorType: Error { case limited case abuse } Result 타입을 리턴하는 함수 정의 func requestAPI(..
Stored property vs Computed property stored property는 메모리를 먼저 정해진 후 대입하는 형태이므로, '=' 기호가 존재 computed property는 계산 후 메모리 공간 정해짐 '='기호가 존재하지 않음 class Sample { public let config: String = { return "sample" }() public let config2: String = { return "sample" } public let config3: String { return "sample" } public lazy var config4: String = { return "sample" }() public func config5() -> String { return..
case 문에 where사용 방법 for문과 동일하게 case문 뒤에 where을 사용하여 처리 switch personA?.job { case let .engineering(year) where year == .junior : print("junior engineering") default: print("others") } 사용 예시 예시) 특정 사람의 직업을 print하는 코드 모델 정의 enum Job { case engineering(Year) case dentist(Year) } enum Year { case junior case senior } struct Person { let job: Job } case에 where 사용하여 print var personA: Person? = nil ove..
print와 NSLog의 차이 NSLog는 String타입만 입력 가능 print(1) NSLog(1) // Cannot convert value of type 'Int' to expected argument type 'String' NSLog는 time stamp와 Project이름이 같이 출력 let sample = 123 print("this is print = \(sample)") // this is print = 123 NSLog("this is NSLog = \(sample)") // 2021-02-24 23:35:53.363868+0900 NSLog[5403:871822] this is NSLog = 123 NSLog는 print에 비하여 매우 느린 performance NSLog는 mult..
@discardableResult 의미: 문구 그대로 결과값을 discardable(버릴 수 있는) 의미 함수의 return값을 discadable시킬 수 있다는 의미 -> return 값을 사용하지 않아도 warning 메세지를 나오지 않도록 설정 @discardableResult를 사용방법 Warning메세지: "Result of call to 'returnFunction(count:)' is unused" 해당 함수 위에다가 @discardableResult를 사용하면 warning메세지 제거
Bundle이란 실행 가능한 코드와 그 코드가 사용하는 자원을 포함하고 있는 디렉토리 가지고 있는 내용 - info.plist, assets, string 파일 등 프레임워크 번들은 dynamic library에서 사용하는 코드와 자원을 포함 모든 앱 Bundle은 앱에 대한 정보가 담긴 info.plist파일을 갖음 Package란 Finder가 사용자에게 단일 파일로 보여주는 디렉토리 package는 macOS에서 디렉토리를 추상화하는 방법 중 하나 가지고 있는 내용 - .app, .playground, .plugin 등 Bundle Display Name: Bundle은 사용자에게 보여지는 이름과 실제 Bundle이 사용하는 File System의 이름을 따로 관리 - Finder에서 이름을 변경하..
개념 array값에 enumerated()함수를 사용하면, (index, value) 튜플형식으로 구현된 리스트형이 리턴 예제) for문과 사용 let arr = ["one", "two", "three"] print(arr.enumerated()) // EnumeratedSequence(_base: ["one", "two", "three"]) for (index, number) in arr.enumerated() { print("\(index), \(number)") } /* 0, one 1, two 2, three */
Hit Testing이란? 터치 이벤트가 발생한 최상단 뷰를 찾는 행위 -> 찾는 이유: First Responsder (해당 이벤트를 처리할 수 있는 첫 번째 뷰를 탐색하는 것) Hit Testing 동작 원리 최상단 뷰 탐색(역순 탐색): 상식적으로 사용자가 탭한건 가장 위에 얹어진 뷰라고 생각할 수 있지만, Hit Testing은 가장 밑에 깔린것부터 탐색 현재 MainView위에 Subview1, Subview2가 sibling을 이루고 있다면, 아래와같이 탐색 UIWindow -> MainView -> Subview2 -> Subview1 UIWindow -> hitTest(_:with:) 호출 -> 내부적으로 point(inside:with:) 호출 // point(inside:with)로 현..