반응형

전체 글 184

Swift | Method Dispatch관하여

안녕하세요오늘은 공식문서에는 없지만Method Dispatch에 대해서 알아보고자합니다 Method Dispatch| 공식문서에는 없지만 이걸 남기는 이유는 컴퓨터가 동작하는 방식에 대해서 더 잘 이해하기 위해서정리했습니다 :) 우선 내가 알고있는 지식이라곤 컴파일 타임은 정적 타입 검사일 때런타임에는 동적 타입 검사이고컴파일은 기계어로 이해할 수 있는 0과 1로 변환되는 과정이며런타임은 컴파일을 거친 코드인 기계어가 사용자가 사용하는 순간이라고 알고 있었답니다 강의에서 자세하게 풀이해줬기 때문에좀 더 세세하게 나뉘고 있고 런타임과 컴파일 타입에서 일어날 수 있는 문제점에 대해서 한 번 더 고찰할 수 있었던 강의가 아닌가 싶었습니다 그리고 메서드 디스패치는 간단히어떤 메서드들의 특징에 대해서 다루는 시간..

Swift 2024.05.21

Swift | 고차함수 filter / reduce 관하여

안녕하세요고차함수 나머지 부분도 다루고자 합니다 filter와 reduce에 대해서 정리를 해봅시다 filter|특정조건을 만족하는 요소들만 걸러내는 함수새로운 컬렉션을 반환하고 원본 컬렉션의 요소 중 조건을 만족하는 요소들로 이루어진 배열을 생성합니다 기존 배열 등 각 아이템 조건을 확인하고 참을 만족하는 아이템을 걸러내서 새로운 배열을 만들어냅니다(각 아이템을 필터링해서 걸러내서 새로운 배열을 만들 때 사용합니다)   .filter로 통해서 조건을 통해서 배열을 반환하는걸 볼 수 있습니다  클로저를 사용하는 이유는더 간결하게 작성할 수 있기 때문입니다  evenNumbersArray같은 경우 첫 번째 필터 조건이 2로 나눴을 때 0인 경우이므로2,4,6,8로 줄어들고두 번 째 필터 조건이 5보다 작아..

Swift 2024.05.21

Swift | 고차함수 map / faltmap / compactmap에 관하여

안녕하세요 오늘은고차함수에 관하여 정리하고자 합니다 map/flatmap/compactmap 여러가지가 있는데요여기에 관하여 특징과 사용방법에 관하여 알아볼까요? map|각 요소에 대해 동일한 연산을 수행하고 그 결과를 새로운 컬렉션으로 반환하는 고차함수   함수를 인자로 받아 각 요소에 함수를 적용하고 그 결과 새로운 컬렉션을 반환하기 때문에코드의 간결성과 가독성, 재사용이 용이하고 컴파일러 최적화를 하기위한 성능에 좋다는 장점이 있습니다 그리고 기존 데이터를  변형하여 새로운 컨테이너를 만드는데 기존 데이터는 변경되는게 없답니다  map 기본형식  T타입의 transform을 받아 새로운 타입의 T타입의 컨테이너를 생성한다는 이야기랍니다예제를 통해서 좀 더 친숙해보자구용! 좀 더 추가적으로 말하자면T..

Swift 2024.05.21

Swift | 프로토콜(Protocols)에 관하여 -2

안녕하세요저번에 이어서 프로토콜을 좀 더 자세히 알아보고자 합니다  Protocol| protocol-1에서 다루었던 것들은기본적으로 사용하는 이유와전반적으로 기본적으로 속성과 메서드들을 정의하고 사용하는 방법과 자주 사용하진 않는다고 하는 Protocol 생성자와 실패 가능 생성자에 대해서 다루었습니다 우선 저번에도 말했다시피 공통된 함수를 만들어 활용할 수 있는 효율 좋은 녀석이라고 말했습니다이번에 강의를 듣고 정리하는 부분은 프로토콜은 1급 객체라고 알 수 있었고 타입 캐스팅을 사용할 수 있는 부분과신기하게도 반드시 구현해야하는걸로 알고 있었던 프로토콜 메서드를@objc로 선언하면 선택적으로 구현해도 되고 안해도 되는 걸로 변경이 된다는 부분을 알게되었답니다 :) 마지막으로 프로토콜 확장에 적용하여..

Swift 2024.05.20

Swift | 프로토콜(Protocols)에 관하여 -1

안녕하세요오늘은 프로토콜에 대해서 알아보고자 합니다 프로토콜은 양이 방대하므로잘 이해해야하는 부분인것 같습니다 Protocol|프로토콜 정리된 수 많은 게시글을 보면 청사진이다라고 말하지만 내 기준에서 이해하기엔 프로토콜을 정의만 한 다음프로토콜을 채택한 곳에서 구현을 할 수 있다라고 정의를 내렸다 사실 Protocol이 C#과 비슷하게 사용하는건 Interface라고 생각이 들었다인터페이스도 동일하게 구현없이 공통된 목적을 가진 함수를 만들고구체적인 구현은 채택한 곳에서만 사용하고 있기 때문입니다 예를 들어서 쉽게 설명하자면게임 중 대전게임이나 몬스터를 공격할 때각각의 능력이나 눈에 보이는 모션은 다르지만공통적으로 공격한다라는 함수를 구현해야하기 때문에Attack()과 같은 공통된 함수를 만들어야합니다..

Swift 2024.05.20

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
반응형