반응형

전체 글 199

Swift | 확장(extension)에 관하여

안녕하세요!오늘은 확장에 대해서 정리하고자 합니다 한 번 훑어봤을 때확장은 c#에서도 있지만 static keyword를 사용했던걸로기억이 나는데요 확장|extension 클래스 / 구조체 / 열거형 / 프로토콜새로운 기능을 추가할 수 있게 해주는 기능입니다 추가할 수 있는 기능이 많은데요 메서드 추가계산된 속성추가서브스크립트 추가초기화 메서드 추가중첩 타입 추가기존 타입을 프로토콜 준수하도록 만들 수 있음 새 기능을 추가는 할 수 있지만기존 기능을 재정의 할 수는 없습니다+클래스 한정하여 지정생성자는 본체에서 인스턴스를 찍어내는 중요한 역할을 하므로 확장에서 구현하지 못함(사실상 가능함) 하지만클래스의 경우 편의 생성자만 추가가 가능하고 지정생성자 소멸자는 반드시 본체에 구현을 해야합니다 쉽게 말해서 ..

Swift 2024.05.20

Swift | 타입캐스팅(Type Casting)에 관하여 - is / as

안녕하세요!오늘은 타입캐스팅(Type Casting)에 관하여알아보고자 합니다 타입캐스팅|Type Casting 부모 클래스에서 상속된 자식 클래스는자기 자신의 타입 + 부모클래스 타입을가지고 있어요 이유는부모 클래스의 특성을 물려받았기 떄문인데요 메서드를 오버라이딩했더라도 컴파일러가클래스의 형태에서 중요하게 여기는메서드의 이름 매개변수 타입 반환타입이 변하지 않는 한 클래스 형식이 달라지는 것은 아니기 때문입니다 이렇기 때문에 자식 클래스는 자신의 타입 대신부모 클래스 타입으로 선언하여 사용이 가능하답니다 타입 캐스팅은isas 연산자로 구현합니다 두 연산자는 값의 타입을 확인하거나값이 다른 타입으로 캐스트하는 간단한 방법을 제공하고 있답니다 이제 간단한 설명은 끝났으니코드를 통해서 알아보고자 합니다  ..

Swift 2024.05.19

Swift | 서브스크립트(Subscripts)에 관하여

안녕하세요 오늘은 서브스크립트에 관하여알아보고자 합니다:) 용어는 생소하지만코드를 보면 어? 이미 알고 있는 부분이였잖아할 수 있답니다 서브스크립트|subscripts 서브스크립트란 대괄호를 이용해서 접근 가능하도록 만든 문법이랍니다 저희가 사용했던 배열과 딕셔너리에서 사용하고 있져? Array[index]Dictionary[key:value:] 클래스 / 구조체 / 열거형도서브스크립트로 구현이 가능합니다 우선 클래스 예시 클래스에서 subscript로 get set을 구현해서사용하고 있습니다 인스턴스화 하여 불러올때data[0]으로 호출할 수 있습니다그리고 set의 파라미터는newValue도 사용이 가능합니다 set이 있기때문에 "SSSS"로 변경할 수 있는걸 확인할 수 있습니다  구조체에서도 서브스크..

Swift 2024.05.17

공식문서 Swift | class(클래스) 필수 생성자 / 실패가능 생성자(c / 소멸자에 관하여

안녕하세요 오늘은지정 생성자/편의 생성자에 이어서필수 생성자와 실패가능 생성자소멸자에 대해서 알아보고자 합니다 필수 생성자|Required Initialization 클래스 생성자 앞에 required 키워드를 사용하게 되면하위 생성자는 반드시 해당 필수 생성자를 구현해야합니다 만약 하위 클래스에서 필수 생성자를 구현할 때상위 필수 생성자를 구현하더라도override 키워드가 아닌 required 키워드만 붙이면 됩니다  또 다른예시를 보고자합니다  Vehicle 클래스 생성자는 reuiqred 키워드를 사용했기 때문에서브클래스(자식클래스)에서 required 생성자를 반드시 구현해야합니다그래서 자식클래스에서 반드시 required를 사용하여 구현하는것을 볼 수 있습니다   실패가능 생성자|실패가능 생성..

Swift 2024.05.17

공식문서 Swift | class(클래스)와 struct(구조체)에 관하여 - 초기화와 생성자 3 (✏️편의생성자/지정생성자)

안녕하세요이어서 지정생성자와 편의 생성자를더 알아보고자 합니다  우선 생성자 위임 규칙이 있습니다 델리게이트 업과 델리게이트 다운이 있는데요  이렇게 글 보다 코드로 보는게 이해가 빠르기 때문에코드 한 장을 보고 이야기하도록 합시다 즉 코드에서클래스에서 지정 생성자를 호출 할 때슈퍼지정생성자를 불러오면 델리게이트업이며 하위 클래스에서 편의 생성자 안에서 다른 편의생성자나 지정생성자를 호출하는 경우입니다 다음으로클래스 생성자 상속 구현 규칙에 대해서 알아보고자 합니다  override init()이라고 해도반드시 suepr.init()을 호출해주어야합니다 그리고 다음으로 클래스 지정/편의 생성자 상속의 예외사항이 존재합니다  이렇게 편의 / 지정 생성자의 자동상속을 알 수 있습니다 하위 클래스에서 정의를 ..

Swift 2024.05.17

공식문서 Swift | class(클래스)와 struct(구조체)에 관하여 - 초기화와 생성자 2 (✏️편의생성자)

안녕하세요!저번에 이어서생성자에 대해서 좀 더 자세히 알아보고자 합니다저번시간에 정말 기초적인걸 다뤘으니 궁금하시다면한 번 읽고 오시는걸 추천드립니다~!  우선 구조체의 생성자에 대해서 정리하는 시간을 가지려고 합니다 구조체의 생성자는 클래스에 비해서 비교적 간단합니다 구조체는 init() 생성자내부에 self.init(...)으로 오버로딩된 함수 호출이 가능합니다   이렇게 이미지를 보면 init(매개변수 red, green, blue)함수를  오버로딩한 함수에서 호출하는걸확인할 수 있습니다  다음으로 클래스 생성자에 대해서 알아보고자 합니다 클래스는 구조체보다 좀 더 다양하게 생성자를 만들 수 있습니다 클래스는 지정생성자와 편의생성자가 있습니다 쉬운 예제 하나를 보고 설명하도록 하겠습니다 지정생성자는..

Swift 2024.05.17

Swift | class(클래스)와 struct(구조체)에 관하여 - 초기화와 생성자

안녕하세요오늘은 init에 대해서 다루고자 합니다 앞에서 간단하게 사용방법을 배웠었죠? 오늘은 좀 더 깊이 배워보고자 합니다 기본적으로 생성자와 초기화는 코드로 보는게 더 편할겁니다   초기화(initialization)는인스턴스가 사용될 수 있도록 준비하는 과정입니다초기화는 인스턴스를 생성할 때 실행되고 생성자를 통해 수행이 됩니다 생성자(Initializer)는보통 init 키워드로 정의가되고인스턴스가 생성될 때 자동으로 호출이됩니다모든 속성이 기본값을 가지고 있다면 직접 생성자를 정의하지 않아도 됩니다그러나 초기화가 필요한 경우 생성자를 직접 정의해야합니다init()도 오버로딩이 가능합니다  위 코드에서는 생성자는 property 속성을 초기하는데 사용이 됩니다 생성자는 객체를 초기화하고 속성을 설..

Swift 2024.05.16

Swift | class(클래스)와 struct(구조체)에 관하여 - 상속(inheritance)과 재정의(overriding vs overloading)

안녕하세요!오늘은 상속에 대해서 알아보고자 합니다 상속이란 말 그대로 클래스가 다른 클래스에게 무언가 남겨줄 수 있는유산 같은거라고 생각하시면 됩니다 상속은 부모가 자식에게 물려받는 것을 의미하는데이걸 코드에도 적용이 됩니다 상속(Inheritance) 한 클래스가 다른 클래스에서 정의된 프로퍼티나 메서드를 물려받아 사용하는 것 (구조체❌클래스🙆🏻‍♀️) only class에서만 사용이 가능한 기능 게임에서 정말 많이 사용했던 아이이기 때문에 낯설지가 않은데요스위프트에서 예제로 알아봅시다  클래스를 하나 우선 만들어주고이제 자식에게 상속을 해보고자 합니다 상속의 형태는 class 클래스명: 부모 클래스 이름 {...구현 부분 ....} 로 되어있답니다  코드로 구현하자면 이렇게 구현할 수가 있답니다 ..

Swift 2024.05.16

Swift | class(클래스)와 struct(구조체)에 관하여 - 메서드(method)

안녕하세요!저번엔 프로퍼티(속성)에대해서 배웠었는데요 프로퍼티에는저장 / 계산 / 옵저버 / 타입이 있는걸 배웠었죠? 이번엔 메서드(method)에대해서 알아보고자 합니다 메서드(Method) 클래스나 구조체 열거형과 같은 특정 객체 내에서함수가 선언될 경우에 메서드라고부릅니다 method에는 인스턴스 매서드와 타입메서드가 있습니다   우선 인스턴스 메서드부터 알아봅시다인스턴스 메서드인스턴스 메서드는 객체 타입 상태로는 호출이 가능하지 않고반드시 인스턴스화 후에 호출할 수 있답니다 클래스 / 구조체 / 열거형 같은 각각 인스턴스에 속하는 함수랍니다 클래스 경우  다음으로 구조체에 대해서 알아봅시다 엇??!!클래스랑 동일하게 사용이 가능할 줄 알았는데 안된다고 당황하지 마세요 mutating 키워드를 사용..

Swift 2024.05.16

Swift | class(클래스)와 struct(구조체)에 관하여 - 3 property ( 프로퍼티 옵저버 willSet, didSet / 타입프로퍼티)

안녕하세요오늘은 프로퍼티 2번째 시간입니다 프로퍼티 옵저버와타입프로퍼티에 대해서 배우고자 합니다 저번시간에저장 프로퍼티와계산 프로퍼티에 대해서 배웠는데요모르겠다 하시는 분들은한 번 읽어보고 이 게시글을 보는것을 추천드립니다  프로퍼티 옵저버(Property Observer) 값이 변경될 때 이를 알아차리고 반응하는 객체입니다 옵저버는 프로퍼티 값이 설정될 때 마다 항상 호출됩니다 만약 현재 값과 동일한 값이 할당되더라도 프로퍼티 옵저버는 호출이 된답니다 프로퍼티 옵저버는 2가지 종류가 있습니다 willSet / didSet 용도가 반대된답니다  속성이 변하는 시점을 알아차리고 호출되는 코드를 짜는 자체가 어렵기 때문에실제 프로젝트에서 많이 사용하는데여기서 didSet을 더 많이 사용합니다  매개상수는 d..

Swift 2024.05.16
반응형