일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Human interface guide
- swift documentation
- 리펙토링
- 리펙터링
- Xcode
- uiscrollview
- ios
- Refactoring
- RxCocoa
- Observable
- collectionview
- rxswift
- SWIFT
- UICollectionView
- 리팩토링
- map
- MVVM
- HIG
- ribs
- UITextView
- Protocol
- swiftUI
- uitableview
- 애니메이션
- tableView
- 스위프트
- combine
- 클린 코드
- clean architecture
- Clean Code
- Today
- Total
목록분류 전체보기 (1645)
김종권의 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..
"빨리 가는 유일한 방법은 제대로 가는 것이다." - 로버트 C. 마틴 (Rovert C. Martin) 설계(design)와 아키텍처(architecture)의 차이 결론적으로 의미 차이가 없음 아키텍처(architecture): 디테일한 것보다는 전체적인 것 설계(design): 디테일한 것에 초점 ex) "집"의 아키텍처: 집의 형태, 외관, 방의 배치 - 이런 것들은 모두 설계(design), 즉 아키텍처(architecture)는 설계(design)로 표현할수 있으므로 같은 의미 소프트웨어 아키텍처의 목표 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 하는것 * 참고: Clean Architecture
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..
enum 타입에 같은지 비교하는 연산자를 적용하는 방법 enum 타입 예시 enum JobType { case singer case engineering case dentist } Equatable 구현 enum JobType: Equatable { case singer case engineering case dentist } "static func == "로 연산자 구현 * 참고 - lhs: left hand side, 첫번째 매개변수를 lhs, 두번째 매개변수를 rhs enum JobType: Equatable { case singer case engineering case dentist static func == (lhs: Self, rhs: Self) -> Bool { switch (lhs, rh..
디폴트: 1.5 $ defaults read .GlobalPreferences com.apple.mouse.scaling 가속도 제거: -1 $ defaults write .GlobalPreferences com.apple.mouse.scaling -1
Cocoapods이란 일반적으로 오픈소스를 관리하는 방법에는 아래 방법 존재, 두 가지 단점을 극복한 오픈소스 관리하는 cocoapods - 압축 파일로 소스를 받아서 직접 프로젝트에 넣는 방법 - 버전 업데이트가 어려운 단점 - 개발하고 있는 저장소에 오픈소스 저장소를 링크시켜 프로젝트에 삽입 - circular dependency 문제 (앱에서 A라이브러리 사용하고 있을 때 A라는 오픈소스 저장소를 또다시 링크시키면 충돌) Cocoapods의 장점 - 라이브러리 버전 관리 - 라이브러리 의존성 체크 - 지원 OS버전 설정에 간편화 Cocoapods은 ruby기반으로 제작 Cocoa pods 지원 버전 정의 pod ''myFramework', '0.0.1' --> 0.0.1버전 pod 'myFramew..