본문 바로가기
반응형

스위프트15

Swift 패턴 이야기- 빌더 패턴(builder) 빌더 패턴은 복잡한 객체의 생성을 도우면서 어떻게 이러한 객체들을 생성하는지에 대한 프로세스를 강제한다. 일반적으로 빌더 패턴에서는 복잡한 타입으로부터 생성 로직을 분리하며, 다른 타입을 추가한다. 빌더 패턴은 타입의 서로 다른 결과물을 생성하는 데 동일한 생성 프로세스를 사용하게 해준다. 빌더 패턴을 구현하는데 사용할 수 있는 방법에는 두 가지가 있다. 첫 번째 방법은 구체적인 방법으로, 원래의 복잡한 객체를 설정하는 정보를 가진 여러 가지의 빌더 타입을 갖는 방식이다. 두 번째 방법은 모든 설정 가능한 옵션을 기본 값으로 설장하는 단일 빌더 타입을 사용해 빌더 패턴을 구현하며 필요하다면 옵션 값을 변경하는 방식이다. 빌더 패턴 구현 struct BugerOld { var name: String var.. 2021. 7. 21.
Swift 패턴 이야기- 싱글턴 패턴(singleton) 싱글턴 패턴은 애플리케이션 생애 동안 클래스 인스턴스화를 단일 인스턴스로 제한한다. 이 패턴은 애플리케이션에서 행위를 조직화하기 위해 하나의 인스턴스만 필요ㅛ로 하는 경우에 매우 유용하다. 애플리케이션이 블루투스로 원격 장치와 통신하면서 애플리케이션 곳곳에서 연결을 유지하고 싶을 경우가 싱글턴을 사용하는 좋은 예가 된다. 누군가는 연결 클래스의 인스턴스를 한 페이지에서 다음 페이지로 전달해 줄 수 있다. 싱글턴 패턴은 참조 타입에서만 구현할 수 있다. 싱글턴 패턴 구현하기 class MySingleton { static let sharedInstance == MySingleton() var number = 0 private init() {} } 싱글턴 사용 예 var singleA = MySingleto.. 2021. 7. 21.
extension Double - String 통화 기호(소수점 두 자리 반올림) 제목의 요약과 같이 double값을 통화를 나타내는 값인 String타입으로 변환하는 메소드를 추가하기 위해 Double 타입을 확장하는 예제. 이 메서드는 소수점 두 자리로 반올림하고 통화 기호를 추가하는 예제. extension Double { func currencyString() -> String { let divisor = pow(10.0, 2.0) let num = round(self * divisor).rounded() //제수 return "$\(num)" } } 확장에는 저장 프로퍼티를 추가할 수 없지만, 연산 프로퍼티는 추가할 수 있다. extension Int { var squared: Int { return self * self } } 정수를 제곱한 값을 얻기 위해 연산 프로퍼티로 .. 2021. 7. 14.
19. 스위프트의 접근제어 스위프트의 접근제어 객체지향 프로그래밍 패러다임에서 중요한 캡슐화와 은닉화를 구현하는 이유는 외부에서 보거나 접근하면 안되는 코드가 있기 때문이다. 불필요한 접근을 허용하지 않고자 할 때 접근 제어를 이용한다. 접근수준 키워드는 총 다섯가지가 있다. 개방 접근수준(open), 공개 접근수준(public), 내부 접근수준(Internal), 파일외부비공개 접근수준(fileprivate), 비공개 접근수준(private) 개방 접근수준은 클래스에서만 사용한다. 공개 접근수준, public 자신이 구현된 소스 파일은 물론, 그 소스 파일이 속해 있는 모듈, 그 모듈을 가져다 쓰는 모듈 등 모든 곳에서 사용할 수 있다. 공개 접근수준은 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 많이 사용한다. 개.. 2019. 2. 25.
18. 인스턴스의 생성과 소멸 인스턴스의 생성과 소멸 이니셜라이저를 정의하면 초기화 과정을 직접 구현할 수 있다. 이니셜라이즈는 func 키워드를 사용하지 않고 init키워드를 사용하여 이니셜라이저 메서드임을 표현한다. 클래스, 구조체, 열거형 등의 구현부 또는 익스텐션 구현부에 위치할 수 있다. 다만 클래스의 지정 이니셜라이저는 익스텐션에서 구현해줄 수 없다. 클래스, 구조체 열거형의 기본적인 형태의 이니셜라이저 예제 코드 class ClassA { init() { //초기화 코드 } } struct StructA { init() { //초기화할 때 필요한 코드 } } enum EnumA { case someCase init() { //열거형은 초기화할 때 반드시 case중 하나가 되어야 한다. self = .someCase //초.. 2019. 2. 25.
17. 스위프트의 프로퍼티와 메서드에 대한 이해 스위프트의 프로퍼티와 메서드에 대한 이해 슬슬 집중도가 떨어지고 있다. 주중반을 넘어가면 힘이 빠지는 법인데 오늘도 꾸준히 포스팅을 작성한다. 오늘 첫 포스팅은 스위프트의 프로퍼티와 메서드에 대한 내용을 간략하게 정리한다. 1. 프로퍼티 저장프로퍼티와 연산 프로퍼티, 타입 프로퍼티로 나눌 수 있다. 저장프로퍼티는 일반적으로 인스턴스의 변수 또는 상수를 의미하며 구조체와 클래스에서만 사용가능하고, 연산 프로퍼티는 특정 연산을 실행한 결과값의 의미하는데 클래스, 구조체, 열거형에 쓰일 수 있다. 타입프로퍼티는 특정 타입에 사용되는 프로퍼티을 말한다. 간단하게 요약하자면 *** 프로그래밍 언어에서 사용되던 인스턴스 변수는 저장 프로퍼티로, 클래스 변수는 타입 프로퍼티로 구분지을 수 있다. *** 책에 보면 구.. 2019. 2. 24.
반응형