일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 옵셔널 체이닝
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- 문자열 보간법
- xcode
- swift
- 직장인인강
- 독학
- SeSAC
- Optional Chaining
- 기본문법
- userDefaults
- 프로퍼티 관찰자
- cancelAsyncWrite
- 인스펙터
- switch
- enum
- beginAsyncWrite
- 패스트캠퍼스
- 함수
- Realm
- Git
- TableView
- 패스트캠퍼스후기
- RawValue
- Background
- ios
- 직장인자기계발
- Threading
- 열거형
- 패캠챌린지
- Today
- Total
목록전체 글 (99)
아삭아삭 iOS 개발
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/C01Nh/btrtOzzb32n/wCkkUYXQpV8rwn5AqF07jk/img.png)
■ 타입 캐스팅(type casting) 인스턴스의 타입을 확인하는 가능 → 어떠한 클래스의 인스턴스를 (자체 클래스 계층 구조의) 다른 곳에서 부모 클래스 or 자식 클래스의 타입으로 사용 가능여부 확인 클래스와 딕셔너리에서 많이 사용 클래스와 하위 클래스의 계층도와 함께 타입 캐스팅을 사용하여 → 특정 클래스 인스턴스의 타입 확인 가능 → 같은 계층도 내에서 다른 클래스로 인스턴스를 캐스트 가능 → (클래스의 계층도에 해당하는)클래스의 인스턴스를 포함하는 배열 정의 가능 타입 캐스팅을 사용해도 기본 인스턴스는 동일하게 유지됨 → 즉, 캐스팅은 실제로 인스턴스를 수정하거나 값변경을 수행하지는 않음 타입 캐스팅을 사용하여 타입이 프로토콜을 준수하는지 확인 가능 요즘 베이징 올림픽하니까 오늘의 예시는 겨울..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oOxuH/btrtITT8QxQ/jElmuJwkss16BflhoqV5x0/img.png)
■ 재정의 (오버라이딩, overriding) 하위 클래스는 상위 클래스에서 상속할 인스턴스 메서드, 타입 메서드, 인스턴스 프로퍼티, 타입 프로퍼티, 또는 서브 스크립트에 대해 자체적인 사용자 구현을 제공할 수 있음 override 키워드 사용 → 같은 이름의 정의가 슈퍼클래스에 없을 경우, 오버라이드를 사용시 컴파일러 오류 발생 → 슈퍼클래스에 동일한 이름의 정의가 있을 경우, 오버라이드 키워드 없이 사용하면 오류 발생 ■ 메서드 재정의 (Overriding Methods) 상속된 인스턴스나 타입 메서드 재정의 → 하위 클래스 내에서 메서드의 맞춤형(또는 대체) 구현 가능 // 지난 포스팅에서 정의했던 베이스 클래스인 Music을 상속한 MCHammer 클래스에 singing()메서드를 재정의 cla..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bpWX3L/btrtxmPuswB/q0mt51ugkkJNjLr9HJkLlk/img.png)
■ 상속 (Inheritance) 클래스는 다른 클래스로부터 메서드, 프로퍼티 또는 다른 특성들을 상속받을 수 있음 → 클래스/프로토콜 등에서는 가능, 열거형/구조체는 상속 불가 → 스위프트에서는 단일상속만 지원, 다중상속은 지원하지 않음 슈퍼 클래스 (=superclass, 부모 클래스) : 한 클래스가 다른 클래스를 상속할 때, 상속하는 클래스 서브 클래스 (=subclass, 자식 클래스) : 한 클래스가 다른 클래스를 상속할 때, 상속받는 클래스 class 클래스 이름: 부모 클래스 이름 { / 구현부 / } ■ 스위프트에서의 상속 클래스 특징 부모 클래스로부터 물려받은 메서드, 프로퍼티, 서브스크립트를 호출하거나 접근할 수 있음 물려받은 메서드, 프로퍼티, 서브스크립트 등을 오버라이딩을 통해 자..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b0nQI2/btrtsT7qxKS/iPwEvO7skbLfLgeJu08YW0/img.png)
■ 프로퍼티 래퍼 (Property Wrappers) 프로퍼티 래퍼는 래핑된 값을 저장하는 역할 수행 → 쓰레드 안정성 검사할때 사용 → 기본 데이터를 데이터베이스에 저장하는 프로퍼티가 있는 경우 사용 프로퍼티 저장방법 관리코드와 프로퍼티 저장코드 사이에 추가 wrappedValue 프로퍼티를 정의하는 구조체/열거형/클래스 생성하여 정의 프로퍼티 래퍼 관리코드는 한 번 작성한 후, 여러 프로퍼티에 적용해서 재사용 가능 → 프로퍼티 래퍼를 사용하여 다른 여러 프로퍼티의 get구문과 set구문에서 코드를 재사용 가능 스위프트 문법 사이트[1]에 나온 예시를 응용하여 아래와 같이 HundredOrLess 프로퍼티 래퍼를 작성해보았다. 100세 시대니까 100세 이하까지는 stillyoung하다는 것으로 new..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9g1tp/btrtoA7ALX7/3MkqMWkNMQJjxgxz2FeQD0/img.png)
■ 프로퍼티 관찰자(property observers) 프로퍼티의 값이 변경될 때 사용자가 지정하는 동작에 응답 가능 변경하려는 프로퍼티의 새로운 값이 기존값과 같아도 프로퍼티가 설정(set)될 때 프로퍼티 옵저버는 호출됨 프로퍼티 관찰자를 추가할 수 있는 위치 3곳 1) 저장 프로퍼티 2) 오버라이딩이 된(=상속한) 저장 프로퍼티 3) 오버라이딩이 된(=상속한) 연산 프로퍼티 상속된 프로퍼티의 경우(2,3번) 하위 클래스의 프로퍼티를 재정의하여 프로퍼티 관찰자를 추가 연산 프로퍼티의 경우, (관찰자를 생성하는 대신) 프로퍼티의 setter를 이용하여 값 변경을 관찰하고 응답 함수/메서드/클로저/타입 등의 외부에 있는 지역 및 전역 변수에도 모두 사용 가능 ■ 프로퍼티 관찰자 정의방법 2가지 1) wil..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9qNcU/btrtoze9DuZ/4sHDAD7WSNRpxhUy6siCT0/img.png)
2) 연산 프로퍼티 (computed property) 특정 연산을 수행하는 결과값 특정 타입의 인스턴스와 연결 클래스/구조체/열거형에서 사용 가능 값을 직접적으로 저장하지 않음 → 대신 get, set을 사용해서 다른 프로퍼티와 값을 간접적으로 조회하고 설정 가능 역할 2가지 수행 1) 인스턴스 내외부의 값을 연산해서 적절한 값을 돌려주는 접근자 역할 2)내부의 프로퍼티의 값을 간접적으로 설정하는 설정자 역할 연산 프로퍼티에서 set을 지우고 get만을 남겨서 읽기전용 연산 프로퍼티로 이용 가능 → 단, 값 변경하여 설정 불가 (값을 반환하고 점 구문으로 접근만 가능) set 사용시, 매개변수 이름을 별도로 지정하지 않으면 디폴트값인 ‘newValue’라는 이름으로 사용 가능 struct Coin { ..