본문 바로가기

공부/[iOS&Swift]31

[Swift] Extension(확장)에 대하여 ✏️ Extension❓ Swift의 Extension이란 이미 존재하는 class, structure, enumeration, protocol 타입에 새로운 기능을 추가하는 기능이다. Objective-C의 카테고리와 비슷하다는데... Swift의 Extension(확장)은 아래의 기능을 수행할 수 있다. Add computed instance properties and computed type properties (연산 인스턴스 프로퍼티 / 연산 타입 프로퍼티) Define instance methods and type methods (인스턴스 메서드 / 타입 메서드) Provide new initializers (새로운 생성자) Define subscripts (서브스크립트) Define and u.. 2022. 1. 17.
[Swift] Swift의 상속에 대하여 ✏️ 클래스의 특징인 상속! 상속이란, 한 클래스(서브클래스)가 어떤 클래스로부터(슈퍼클래스) 메써드, 프로퍼티등을 상속받는(물려받는)것이다. 스위프트에서 상속은 다른타입과 구분되는 클래스만의 특징이다. 서브클래스는 슈퍼클래스의 메써드, 프로퍼티, 서브스크립트를 접근하여 사용, 호출 할 수 있다. 뿐만 아니라 오버라이드 기능을 통해 재정의를 할 수도 있다. 서브클래스는 Property observer또한 구현할 수 있는데, 특이한것은 슈퍼클래스에서 저장프로퍼티, 연산프로퍼티 중 어떤것으로 정의되었다 하더라도, 서브클래스에서는 Property observer를 구현할 수 있다는 것이다. (기본적으로 Property observer는 연산프로퍼티에서는 구현할 수 없다!) ✏️ Base class(기반 클래스.. 2022. 1. 14.
[Swift] 접근제어(Access Control)에 대하여 ✏️ 접근제어(Access Control에 대하여) 접근제어 왜필요하지? 객체지향 프로그래밍 패러다임에서 몇 가지 중요한 개념이있는데 그 중 하나가 은닉화이다. 이 은닉화를 구현하기 위해 접근제어가 핵심이라고 한다. 캡슐화, 은닉화에 대해서 꼭 한번 공부 및 생각정리가 필요하다고 생각됨! 기본적으로 내 코드(내가 만든 타입, 프로퍼티, 메써드 등)에 접근할 수 있는 접근 수준을 할당함으로써, 그리고 프로토콜의 경우 전역 상수, 변수, 함수와 마찬가지로 특정한 컨텍스트(Context)로 제한함으로서, 은닉화를 구현할 수 있는것 같다. 자세한 내용을 좀 더 들여다보자. 여기서 context라는 표현은 모나드? 뭐 그쪽 Chapter 지나가면서 슬쩍 보였던 것 같은데, 아직 나는 모르는개념이기에(프로토콜도 사.. 2022. 1. 13.
[Swift] 구조체(struct)와 클래스(class) ✏️ 구조체와 클래스 Swift에서 구조체와 클래스를 공부하면서 잘 알아야 할 것은 구조체와 클래스 모두 하나의 타입에 속한다는 것이다. 둘 다 똑같이 커스텀 타입인데 뭐가 다른지를 잘 알고 필요에 맞게 사용하면 될 것 같다. ✏️ 구조체와 클래스의 차이 우선 아래의 내용을 잘 아는게 중요할 것 같다. 구조체는 값 타입(Value type), 클래스는 참조 타입(Reference type)이다. 클래스는 상속이 가능하고, 구조체는 상속이 불가능하다 클래스는 default initializer를 생성해주지 않는다. 반면 구조체는 Swift가 memberwise initializer도 지원해준다. ✏️ 값 타입 vs 참조 타입 값 타입(Value type) 변수를 할당하면 스택 영역에 값이 저장된다. 변수를.. 2022. 1. 12.