Swift

Swift/UIkit

[UIKit] Button의 이벤트를 addAction 메소드를 이용해서 처리해보자. (iOS 14+)

기존의 UIButton Action Handlerprivate let button: UIButton = { let button = UIButton() button.setTitle("버튼", for: .normal) button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) return button}()@objc private func buttonTapped() { print("Button Tapped!")}Button의 이벤트 처리를 위해 @objc로 정의한 메소드를 addTarget 메소드를 이용하여 처리하였다. addActioniOS 14+ 부터 addAction 메소드를 이용해서 Button의 이벤트..

Swift/Swift 기본기

[Swift] for-in과 forEach를 알아보자.

프로젝트를 하다보면 Collection Type을 순회해야할 때가 있는데, 둘의 차이점을 잘 알지 못한 채 지금까지 사용했었다. 이번 글을 통해 for-in과 forEach과 둘의 차이점에 대해 자세히 알아보겠다. 반복문 for-in과 forEach를 알아보기 전에 반복문에 대해 다시 한번 짚어보자. 반복문은 주어진 조건에 의해 특정 코드 블럭을 반복적으로 실행할 수 있게 해주는 구문이다. 1️⃣ for문 - 횟수에 의한 반복 2️⃣ while문 - 조건에 의한 반복 for-in for 루프상수 in 순회대상 { 실행구문 } ✅ 설정한 범위만큼 반복이 일어난다. ✅ Collection에 저장되어있는 요소 수만큼 반복이 일어난다. ✅ 루프상수의 이름은 원하는 대로 작성할 수 있다. ex)index, num..

Swift/Swift 기본기

14. 생성자 (Initialization) - 4

Failable Initialization 만약 클래스, 구조체, enum에서 실패할만한 조건이 들어올 때 초기화를 하지 않도록 하려면 어떻게 해야할까? init? 키워드를 사용해서 init() 메소드를 작성하면 된다. init?() 메소드를 보면 현재 순위를 입력 받아와 갱신하는 메소드이다. 1보다 작은 순위는 없으므로 순위 값이 0이하일경우 nil을 반환하는 Failable init()을 작성했다. 초기화에 필요한 조건을 만족하지 않는 경우 nil을 리턴하면 된다. ✅ 위와 같이 같은 인자와 같은 이림을 가진 생성자는 공존할 수 없다. (non-failable / failable 둘 다 포함) 다른 생성자와 마찬가지로 슈퍼 클래스의 Failable init()도 하위 클래스에서 오버라이딩이 가능하다...

Swift/Swift 기본기

13. 생성자 (Initialization) - 3

클래스에서의 생성자는 값 타입에서의 생성자와 조금 다른데, Memberwise init을 제공하는 값 타입과 달리 클래스는 Memberwise init을 지원하지 않는다. 따라서 모든 클래스들의 프로퍼티는 초기화 과정에서 반드시 초기 값이 할당되어야 한다. ✅ 상속 받은 클래스가 있는 경우 상위 클래스들의 프로퍼티도 모두 초기 값이 할당되어야 한다. 지정 생성자 - Designated Initializer - 클래스에 지정된 모든 프로퍼티는 초기화 해야함. - 클래스 타입은 최소 하나 이상의 지정 생성자가 필요함. init (param) { // statements } 편의 생성자 - Convenience Initializer - 클래스 타입에만 지원하는 보조적인 생성자이다. - 옵셔널 타입이다. - 편..