readLine().split(separator: “”)숫자 야구 게임을 진행하면서 사용자에게 입력 값을 받기 위해 readLine 을 사용하여 입력값을 넣을 수 있도록 구현하였다.하지만 내가 원하는건 사진과 같이 배열의 형태로 숫자를 넣는것이 아닌, 연결된 숫자로 넣기를 바랬다.하나하나 따로 저장해서 연결을해야할지 어떻게 진행을 해야하나 막막한 순간 구글링을 통해 split 메서드를 알아냈다. 이 코드는 사용자로부터 입력을 받고 각 문자를 separator: “” 값으로 분할하여 문자 배열로 만든다.이 코드를 사용하여 입력 받은 각 문자를 “” 로 지정하였더니 원하던 방식으로 값 입력이 가능해졌다.guard let input = readLine()?.split(separator: "") else { ..
제네릭 제네릭은 코드의 유연성과 재사용성을 높여주는 도구로서 함수, 메서드, 클래스, 구조체 열거형 등에서 사용할 수 있다. 제네릭을 사용하면 코드의 일부분을 일반화하여 데이터 타입이나 요구사항에 대한 명확한 정의 없이 다양한 종류의 데이터 타입을 처리할 수 있다. 타입 안정성(Type Safety) : 컴파일 시점에 타입 안정성을 보장합니다. 컴파일러는 제네릭 코드를 사용하여 잘못된 데이터 타입이 전달되는 것을 방지하고 실행 시점에서 발생할 수 있는 에러를 사전에 방지할 수 있다. 코드 재사용성(Reusability) : 동일한 로직을 다양한 데이터 타입에 대해 재사용할 수 있다. 제네릭을 사용하면 타입에 의존하지 않는 범용적인 코드를 작성할 수 있다. 유연성과 확장성(Flexibility and Sc..
예외 처리 오류가 발생할 수 있는 코드 블록을 구분하고 오류에 대한 처리를 하는 방법 예외 처리는 ‘throw’ , ‘do-catch’ 그리고 ‘Error’ 프로토콜을 사용하여 이루어 진다. 1.에러처리 에러처리는 어떤 코드 블록에서 오류가 발생할 수 있는 상황을 정의하고, 이 오류를 처리하는 것을 의미한다. swift 에서는 ‘Error’ 프로토콜 을 준수하는 타입을 사용하여 오류를 표현한다. 2. Error 프로토콜 Error 프로토콜은 swift 에서 오류를 나타내기 위한 프로토콜이다. 사용자 정의 오류 타입을 만들때 이 프로토콜을 준수하도록 해야한다. enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coi..
접근제한자 클래스, 구조체, 열거형, 포로토콜 등 접근을 제어하는데 사용된다. Open: 가장 넓은 접근 수준을 가지며, 해당 멤버가 선언된 모듈 외부에서도 상속하고 재정의할 수 있다. Public: 해당 멤버가 선언된 모듈은 외부에서도 접근할 수 있지만, 재정의는 할 수 없다. 일반적으로 프레임워크의 API 로 공개될 때 사용한다. Internal : 기본 접근 수준이며 동일한 모듈 내에서만 접근이 가능하다. File-private: 같은 소스 파일 내에서만 접근할 수 있습니다. 다른 소스 파일에서는 접근할 수 없습니다. Private: 가장 제한적인 접근 수준을 가지며, 같은 선언 블록내에서만 접근할 수 있다. 이러한 접근 제한자는 코드의 가시성과 모듈간의 의존성을 관리하고 코드의 안전성과 유지 보수..
프로퍼티 옵저버 프로퍼티 옵저버는 프로퍼티의 값이 변경될 때 특정한 동작을 수행할 수 있게 해주는 기능이다. 프로퍼티의 값이 변경되기 전 (willSet) 과 변경된 후 (didSet) 에 호출됩니다. 이를 통해 값의 변화를 감지하고 추가 작업을 수행할 수 있다. didSet 프로퍼티의 값이 변경된 후에 호출되는 옵저버, 이 옵저버는 이전 값과 새로운 값 사이의 변화를 감지하거나, 값에 따른 추가적인 동작을 수행할 수 있다. 매개변수로는 변경되기 전의 값이 전달된다. willSet 프로퍼티의 값이 변경되기 전에 호출되는 옵저버, 이 옵저버는 새로운 값이 어떤 것인지 파악하거나, 변경 전 상태를 저장하는 등 작업을 수행할 수 있다. 매개변수로는 변경될 값이 전달된다. class StepCounter { v..
델리게이트 패턴은 객체 지향 프로그래밍에서 자주 사용되는 디자인 패턴 중 하나이다. 하나의 객체가 다른 객체의 동작을 직접 구현할 필요가 없을때 객체 간의 결합도를 낮추고 유연성을 높이고자 할 때 이벤트 처리, 데이터 소스 및 테이블 뷰와 같은 UI 구성 요소에서 사용자 이벤트를 처리할 때 등 델리게이트(Delegate) : 델리게이트는 특정 작업을 수행하기 위해 다른 객체에게 일부 책임을 위임하는 객체(대리자) , 델리게이트는 프로토콜을 준수하여 정의되며, 메서드를 호출하여 작업을 수행한다. 델리게이트 프로토콜(Delegate Protocol): 델리게이트를 구현하기 위해 정의된 프로토콜 이다. 델리게이트 프로토콜은 델리게이트 객체가 구현해야 하는 메서드를 정의하고 있다. 델리게이트 객체(Delegat..