SWIFT91 Swift : 기초문법 [프로토콜#3 - 타입으로서의 프로토콜, Delegate] 본 게시글은 yagom님과Zedd0202님의 게시글을 참고하여 작성되었습니다. 먼저 읽고 와주세요! Swift : 기초문법 [프로토콜#1 - 프로퍼티 요구사항] Swift : 기초문법 [프로토콜#2 - 메서드 요구사항] 타입으로서의 프로토콜 프로토콜은 다른 타입이 허용되는 여러 곳에서 다음과 같은 프로토콜을 사용할 수 있다. 함수, 메서드 또는 이니셜라이저에서의 매개변수 타입 또는 리턴 타입 상수, 변수 또는 프로퍼티로서의 타입 배열 또는 딕셔너리 또는 다른 컨테이너의 항목으로서의 타입 TIP 타입으로서의 프로토콜 프로토콜은 요구만 하고 스스로 기능을 구현하지 않는다. 하지만 프로토콜은 코드에서 완전한 하나의 타입으로 사용되기 때문에 여러 위치에서 프로토콜을 타입으로 사용할 수 있다. 프로토콜은 이름을 .. SWIFT/Grammar 2022. 1. 28. Swift : 기초문법 [프로토콜#2 - 메서드 요구사항] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [프로토콜#1 - 프로퍼티 요구사항] 메서드 요구사항 프로토콜은 특정 인스턴스 메서드나 타입 메서드를 요구할 수 있다. 프로토콜이 요구할 메서드는 프로토콜 정의에서 작성한다. 메서드는 일반 인스턴스 및 타입 메서드와 완전히 동일하지만, 실제 구현부인 중괄호 { } 와 메서드 본문 없이 프로토콜 정의의 일부로 작성된다. 매개변수 기본값을 지정할 수 없다. 가변 파라미터는 일반 메서드와 동일하게 작성할 수 있다. 타입 메서드를 요구할 경우 static 키워드를 사용하고, static 키워드를 사용해 요구한 타입 메서드를 클래스에서 구현할 때는 static 키워드나 class 키워드 어.. SWIFT/Grammar 2022. 1. 27. Swift : 기초문법 [프로토콜#1 - 프로퍼티 요구사항] 본 게시글은 yagom님과Zedd0202님의 게시글을 참고하여 작성되었습니다. Protocols 프로토콜(protocol) 이란 쉽게 생각해서 인증서라고 보면 된다. 프로토콜은 특정 작업이나 기능에 적합한 메서드, 프로퍼티 및 기타 요구사항의 청사진을 정의한다. Struct, Class, Enum은 Protocol을 채택해서 특정 기능을 실행하기 위해 프로토콜의 요구사항을 실제로 구현할 수 있다. 프로토콜은 정의를 하고 제시만 할 뿐 스스로 기능을 구현하지는 않는다. 즉, 조건만 정의한다. 메서드 구현부인 { } 중괄호는 사용 불가 하지만, 메서드 이름, 매개변수, 반환 타입 등만 작성 가능하며 매개변수도 사용 가능. 하나의 타입으로 사용되기 때문에 아래와 같이 타입 사용이 허용되는 모든 곳에 프로토콜을.. SWIFT/Grammar 2022. 1. 25. Swift : 기초문법 [타입 캐스팅(Type Casting)] 본 게시글은 yagom님과Zedd0202님의 게시글을 참고하여 작성되었습니다. 타입 캐스팅 타입캐스팅이란 인스턴스 타입을 확인하거나, 인스턴스의 타입을 슈퍼클래스 또는 서브클래스 타입처럼 다루기 위해 사용한다. Swift에서 타입 캐스팅은 is 와 as 연산자를 사용하여 구현함 이 두 연산자는 값의 타입을 확인하거나, 값을 다른 타입으로 전환(Cast)하는 간단하고 표현적인 방법을 제공함 타입 캐스팅을 통해 특정 클래스 인스턴스의 타입을 확인 가능 타입 캐스팅을 통해 프로토콜을 준수하는지도 확인 가능 먼저 알아볼것은 '타입 캐스팅을 사용하여 특정 클래스 인스턴스의 타입을 확인 가능' 부분이다. 인스턴스의 타입은 is 키워드를 사용해서 확인이 가능하다. class Person { var name: Stri.. SWIFT/Grammar 2022. 1. 24. Swift : 기초문법 [상속#3 - 클래스의 이니셜라이저 convenience, required] 본 게시글은 yagom님과장국진님의 게시글을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [상속#1 - 클래스 상속(자식, 부모, 기반 클래스)] Swift : 기초문법 [상속#2 재정의 override] 클래스의 이니셜라이저 값 타입(Struct, Enum)의 이니셜라이저에서는 위임을 위해 이니셜라이저끼리 구분할 필요가 없었지만, Class에서는 지정 이니셜라이저와 편의 이니셜라이저로 역할을 구분한다. 즉, 클래스가 부모클래스에서 상속한 모든 속성을 포함하여 모든 클래스의 저장 속성은 초기화하는 동안 초기 값을 지정해야 줘야 한다. Swift에서는 모든 저장 프로퍼티가 기본값을 가지는데 편리하도록 클래스의 유형에 대해 두 가지 이니셜라이저를 정의한다. 지정 이니셜라이저 클래스의.. SWIFT/Grammar 2022. 1. 24. Swift : 기초문법 [상속#2 재정의 override] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [상속#1 - 클래스 상속(자식, 부모, 기반 클래스)] 재정의 Override 저번 상속 게시글에서 부모/자식/기반 클래스에 대해 알아봤는데, 자식 클래스는 부모 클래스로부터 물려받은 메서드, 인스턴스/타입 프로퍼티, 서브스크립트 등을 그대로 사용하지 않고 자신만의 기능으로 변경하여 사용할 수 있다. 이것을 재정의 Override라고 한다. orverride 키워드를 사용함 Swift 컴파일러가 슈퍼클래스(부모 포함 상위 부모 클래스)에 해당 특성이 있는지 확인 후 재정의함 만약, 재정의할 해당 특성이 없는데 override 키워드를 사용하면 컴파일 오류 발생 자식 클래스에서 부.. SWIFT/Grammar 2022. 1. 23. Swift : 기초문법 [상속#1 - 클래스 상속(자식, 부모, 기반 클래스)] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 상속 클래스는 메서드나 프로퍼티 등을 다른 클래스로부터 상속받을 수 있다. final 키워드를 사용하면 재정의 (Override) 방지 가능 static 키워드를 사용해 타입 메소드를 만들면 재정의 불가능 class 키워드를 사용해 타입 메소드를 만들면 재정의 가능 class 앞에 final 을 붙이면 static 키워드를 사용한 것과 동일 override 키워드를 사용하여 부모 클래스 메소드 재정의 가능 자식 / 부모 / 기반 클래스 A클래스로 부터 상속을 받으면 상속을 받은 B클래스는 A클래스의 자식클래스(Subclass/Child-class)라고 한다. 자식클래스에게 자신의 특성을 물려준 A클래스를 부모클래스(Super.. SWIFT/Grammar 2022. 1. 22. Swift : 기초문법 [서브스크립트(subscript)] 본 게시글은 yagom님과소들이님의 게시글을 참고하여 작성되었습니다. 서브스크립트 클래스, 구조체, 열거형에는 컬렉션, 리스트, 시퀀스 등 타입의 요소에 접근하는 단축 문법 서브스크립트(Subscript)를 정의할 수 있다. 별도의 설정자(Setter)와 접근자(Getter)등의 메서드를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있다. someArray[index] //someArray인스턴스의 index를 통해 해당 인덱스 값 접근 someDictionary[key] // someDictionary라는 Dictionary의 key를 통해 해당값을 가져옴 클래스, 구조체는 필요한 만큼 서브스크립트 구현 가능 서브스크립스트를 여러 개 구현해도 외부에서 서브스크립트를 사용할 땐, 서브스크립트.. SWIFT/Grammar 2022. 1. 21. Swift: 기초문법 [모나드 - 컨텍스트, 함수객체, 모나드] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 모나드 Swift 에는 함수형 프로그래밍 패러다임에서 파생된 기능이나 개념이 종종 등장한다. 이 개념을 이해하지 못한다면 Swift 기능의 절반 정도를 사용하지 못하기 때문에 함수형 프로그래밍 패러다임을 이해하는 게 중요하다. 그 시작은 모나드(monad)이다. 모나드는 한 문장으로 설명하기 어려운 개념이지만, 모나드라는 용어는 수학의 범주론에서 시작된다. 순서가 있는 연산 처리할 때 자주 활용하는 디자인 패턴 사용하는 곳에 따라 수학의 범주론의 모나드인지 특정 디자인 패턴을 따르는 모나드인지 달라짐 프로그래밍의 모나드는 수학 범주론의 모나드의 의미를 완벽히 구현하지 않고, 단지 개념만 차용한 정도의 의미를 가짐 대부분의 성.. SWIFT/Grammar 2022. 1. 20. Swift : 기초문법 [클로저 및 고차함수(map, filter, reduce)] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 클로저 클로저에 대해서 간단하게 예제를 들어보면서 살펴보자. calculator이라는 함수가 있고, 값을 더하거나 빼거나 곱하는 코드를 작성해보자! func calculator(n1: Int, n2: Int) -> Int { return n1 + n2 } var makeCalculation = calculator(n1: 2, n2: 5) //7 만약 calculator 함수에 대한 입력을 순서대로 전달하려면 어떻게 해야 할까? func calculator(n1: Int, n2: Int) -> Int { return n1 + n2 } func add(n1: Int, n2: Int) -> Int { return n1 + n2 }.. SWIFT/Grammar 2022. 1. 19. Swift : 기초문법 [접근 제어 - open, public, internal, fileprivate, private] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 객체지향 프로그래밍인 Swift에서 '은닉화'는 중요한 개념이다. 이를 구현하기 위한 핵심 기능인 접근제어에 대해 알아보려고 한다. 접근제어 접근제어 Access Contorl 이란 코드끼리 상호작용을 할 때 파일/모듈 간 접근을 제한할 수 있는 기능이다. 이를 통해 코드의 상세 구현은 숨기고 허용된 기능만을 사용하는 인터페이스를 제공할 수 있다. TIP OOP (Object Oriented Programming) 추상화 - 공통의 속성이나 기능을 묶어 이름을 붙이는 것. 다른 객체들과 구분되는 핵심적인 특징들에만 집중해 복잡도를 관리할 수 있도록 함. 캡슐화 - 객체의 속성과 행위(메서드)를 하나로 묶고, 실제 구현 내용 .. SWIFT/Grammar 2022. 1. 18. Swift : 기초문법 [인스턴스 #4 클로저 사용 프로퍼티 기본값, 디이니셜라이저] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [인스턴스 #1 이니셜라이저, 매개변수) Swift : 기초문법 [인스턴스 #2 기본 이니셜라이저, 멤버와이즈 이니셜라이저) Swift : 기초문법 [인스턴스 #3 초기화 위임, 실패 가능한 이니셜라이저] 클로저를 사용한 프로퍼티 기본값 설정 사용자 정의 연산을 통해 저장 프로퍼티의 기본값을 설정하려면 클로저나 함수를 사용해 프로퍼티 기본값을 제공할 수 있다. 인스턴스를 초기화할 때 함수나 클로저가 호출되며 연산 결괏값을 프로퍼티 기본값으로 제공하게 된다. 그렇기에 클로저나 함수의 retrun 타입은 반드시 프로퍼티 타입과 일치해야 한다. 만약 프로퍼티의 기본값을 설정하기 위해 클.. SWIFT/Grammar 2022. 1. 15. Swift : 기초문법 [인스턴스 #3 초기화 위임, 실패가능한 이니셜라이저] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [인스턴스 #1 이니셜라이저, 매개변수) Swift : 기초문법 [인스턴스 #2 기본 이니셜라이저, 멤버와이즈 이니셜라이저) 초기화 위임 값 타입인 구조체와 열거형은 코드 중복을 피하기 위해서 한 이니셜라이저가 다른 이니셜라이저에게 일부 초기화를 위함하는 초기화 위임을 간단하게 구현 가능하다. 하지만, 참조 타입인 클래스는 불가능 하니 주의! 구조체와 열거형에서 이니셜라이저가 다른 이니셜라이저를 호출하려면 self.init 키워드를 사용한다. 그리고 반드시 이니셜라이저 안에서만 사용 가능하고, 이것을 사용한다는 것은 사용자 정의 이니셜라이저를 정의하고 있다는 뜻이 된다. 하지만 저.. SWIFT/Grammar 2022. 1. 15. Swift : 기초문법 [인스턴스 #2 기본 이니셜라이저, 멤버와이즈 이니셜라이저] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 먼저 보고 와주세요! Swift : 기초문법 [인스턴스 #1 이니셜라이저, 매개변수) 기본 이니셜라이저와 멤버와이즈 이니셜라이저 저번 게시글에서는 사용자 정의 이니셜라이저에 대해 알아봤는데, 이번에는 기본 이니셜라이저와 멤버와이즈 이니셜라이저에대해 알아볼까 한다. 만약 사용자 정의 이니셜라이저를 정의해주지 않으면 클래스나 구조체는 모든 프로퍼티에 기본값이 지정되어있다는 전제로 기본 이니셜라이저를 사용하게 된다. 기본 이니셜라이저는 프로퍼티 기본값으로 초기화해서 인스턴스를 생성한다. 저장 프로퍼티에 기본값이 있고, 사용자 정의 이니셜라이저가 지정되어 있지 않으면 ➜ 기본 이니셜라이저 제공 저장 프로피티를 선언할 때 기본값을 정.. SWIFT/Grammar 2022. 1. 15. Swift : 기초문법 [인스턴스 #1 이니셜라이저, 매개변수) 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 인스턴스 생성 이니셜라이저는 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비 작업을 하는 단계이다. 이 단계에서 각 저장 프로퍼티의 초기값을 설정한다. 초기화 과정은 initializer를 정의하는 것으로 구현할 수 있다. 이렇게 구현된 이니셜라이저는 새로운 인스턴스를 생성할 수 있는 특별한 메서드가 된다. Swift의 이니셜라이저는 값을 반환하지 않는다. 이니셜라이저의 역할은 단지 첫 사용을 위해 초기화하는 작업만 한다. 또, 초기화와 반대로 여러 값과 자원의 해지를 위해 deinitializer도 사용할 수 있다. 이니셜라이저는 해당 타입의 새로운 인스턴스를 생성하기 위해 호출한다. 이니셜라이저는 func 키워드를.. SWIFT/Grammar 2022. 1. 15. 이전 1 2 3 4 5 ··· 7 다음 한국어 (기본) English Русский 日本語 👉🏻 잠깐만요! 이 글도 한 번 보고 가세요 이전글 다음글 티스토리툴바 서근 개발노트구독하기