일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observable
- combine
- 스위프트
- tableView
- uitableview
- MVVM
- rxswift
- map
- HIG
- SWIFT
- 리펙토링
- Human interface guide
- uiscrollview
- 애니메이션
- ios
- swift documentation
- UICollectionView
- Xcode
- UITextView
- 클린 코드
- Clean Code
- clean architecture
- Refactoring
- 리펙터링
- swiftUI
- collectionview
- Protocol
- ribs
- RxCocoa
- 리팩토링
- Today
- Total
목록Property (6)
김종권의 iOS 앱 개발 알아가기
프로퍼티를 assign한다는 의미 assign한다는 것은 아래처럼 특정 값을 변수에 대입한다는 의미 // a에 1을 assign하는 형태 let a = 1 assign되는 2가지 형태 primary type, struct와 같은 value type을 assign하는 경우 value type을 assign하게되면 a프로퍼티는 value type가 됨 // a에 1을 assign하는 형태 let a = 1 class와 같은 reference type을 assign하는 경우 reference type을 assign하게되면 해당 프로퍼티는 reference type이 됨 class C {} let c = C() reference type 주의사항 reference type이라는 의미를 주의할 것 아래와 같이 c..
기초 개념) stored property와 computed property 메모리 관점 stored property - 별도의 메모리 공간 지정 o computed property - 별도의 메모리 공간 지정 x 사용 관점 stored property - 값을 저장 computed property - 접근하는 시점에 stored property들을 가지고 계산하여 반환 stored property를 사용할때 주의할 점 stored property를 사용하다보면 가장 큰 문제가, 상태 관리를 두 곳 이상에서 하는 경우가 발생 상태 관리를 두 곳 이상에서 하다보면 데이터 관리가 맞지 않아 코드 복잡도가 올라가는 현상이 발생 ex) 커스텀 뷰를 만드는데, ButtonWithImageView안에 또 다른 MyB..
PropertyWrapper를 이용한 로깅 * propertyWrapper 개념은 이전 포스팅 글 참고 propertyWrapper를 이용하면 사용하는쪽에서는 일반 property처럼 사용할 수 있지만, 내부적으로 wrapping하여 프로퍼티가 get되거나 set될때 다양한 처리가 가능 set될때 로깅 스택에 쌓아놓는 방향으로하면 사용하는쪽에서는 단순히 프로퍼티에 값만 변경해주어도 자동으로 로깅되므로 쉽게 사용이 가능 propertyWrapper로 로깅하는 구조 기본적인 propertyWrapper 정의 @propertyWrapper struct HistoryProperty { var _wrappedValue: T var wrappedValue: T { get { _wrappedValue } set { ..
Properties 내부에 property가 var로 선언되어도, copy of value인 struct는 인스턴스를 let으로 할 경우 변경 불가 내부에 property가 var로 선언되고, reference of value인 class는 인스턴스를 let으로 할 경우 변경 가능 Lazy stored property 상수 속성은 초기화가 완료되기 전에 항상 값을 가져야 하므로 lazy 선언 불가 ex) 불필요한 초기화를 피하기 위해 lazy stored property 사용 class DataImporter { var filename = "data.txt" } class DataManager { lazy var importer = DataImporter() var data: [String] = [] }..
super.init 호출 해당 클래스의 내부 property를 모두 초기화 후 super.init을 호출해야 하며, super.init호출 후에만 self.로 함수 호출이 가능 super.init 호출 타이밍 해당 클래스 내부에 property를 초기화 하는 경우 super.init 호출 전에 해당 클래스 내부에 property를 모두 초기화 해당 클래스 내부에서 self.로 함수를 호출하는 경우 super.init 후에 self.호출 init과 내부 property 초기화 주의 사항 init함수 블럭에서 초기화를 하지 않고, 함수를 호출하여 초기화하면 컴파일 에러 발생 self.참조는 super.init 호출 후에
모듈 구현 시 응집도를 높이기 위한 방법 외부에서 읽기만 가능하고 변경은 내부에서만 가능한 property 설정 public private(set) 사용 -> swift에서 get메서드가 필요없는 이유 private(set) 자세한 개념 참고 class Person { public private(set) var name: String init(name: String) { self.name = name } } var jake = Person(name: "jake") print(jake.name) // jake jake.name = "wiki" // error 발생 Computed Property의 용도 getter / setter 용도의 computed property storedProperty는 언더바를..