[Swift] Protocol
·
iOS&Swift
Swift는 클래스를 이용한 추상화보단 구조체와 프로토콜을 통한 프로토콜을 권장한다. 프로토콜에 대해 프로토콜이란, 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다. 구조체, 클래스, 열거형은 프로토콜을 채택할 수 있습니다. 프로토콜 내부에는 채택했을 시 꼭!!! 구현되어야만 하는 메서드, 프로퍼티, 이니셜라이저 등이 정의 및 제시되어 있습니다. 때문에, 프로토콜 스스로는 기능을 구현하지 않습니다. 프로토콜은 다른 프로토콜을 상속받을 수 있고, 또한 다중 상속도 가능합니다. 자식 프로토콜은 부모 프로토콜에 제시된 기능은 중복하여 써줄 필요 없습니다. 프로토콜 채택 시에는 ":"뒤에 프로토콜 이름을 작성하여 채택합니다. 클래스 상속과 같이 사용할 시에는 클래스를 먼저 ..
[Swift] 객체지향(OOP)
·
iOS&Swift
오늘 내용은 객체지향 패러다임과 객체지향의 특징인 일반화, 추상화, 은닉화, 캡슐화이다. 객체지향이 만들어진 이유는 프로그램을 만드는 이들이 세상을 프로그램으로 나타내려는 과정에서 만들어졌다. 때문에 우리가 사는 세상처럼 객체를 중심으로 서로 상호작용하며, 프로그램이 동작하게 된다. 그 과정에서 만들어진 일반화, 추상화, 은닉화, 캡슐화를 한 문장으로 정리하면, 일반화란, 공통된 특성 또는 행위를 묶어 놓은 것 추상화란, 객체를 나타냄에 있어 중요한 포인트만 추려내는 것 은닉화란, 외부로 보일 필요가 없거나, 그러면 안 되는 특성 또는 행위들을 숨겨놓은 것 캡슐화란, 숨겨진 특성 또는 행위를 외부에서 제어할 수 있도록 행위만을 제공해 주는 것 📝 타입을 정의할 때 구조체와 클래스가 사용되는데, 둘의 차이..
[Swift] 옵셔널 추출
·
iOS&Swift
지난 게시물에 옵셔널에 대한 글이 있는데 이번엔 그 글에 연장인 옵셔널 추출에 관한 이야기를 써볼까 한다. 그 당시엔 몰랐지만, 옵셔널 추출에 관해 찾아보면서 다양한 추출방법이 있었고, 오늘 글로 담지 못한 방법 또한, 많을것이라 생각이 든다. 오늘로 또 다시 한주가 시작 됐는데 이번주는 어떨까? Optional 추출은, 옵셔널 바인딩(Optional Binding) 옵셔널 체이닝(Optional Chaining) nil병합(Using the Nil-Coalescing Operator) 강제 언래핑(Unconditional Unwrapping) 사용하여 옵셔널 값을 일반 값으로 꺼내올 수 있다. 옵셔널 바인딩은, 값이 있을 때와 없을 때 상활을 각각 분리하여 값이 있을 때는 해당 값을 상수 또는 변수에 ..
[Swift]Swift random(), randomElement() 함수 알아보기
·
iOS&Swift
Swift를 공부하던 중 랜덤하게 값을 뽑는 함수를 사용해 보았다. 그래서 이번엔 Swift random(), randomElement()에 대해 기록해 보쟈!!🎉 🔸 Swift에서 random() 함수는, 참고 : https://developer.apple.com/documentation/swift/int/2995648-random static func random(in range: Range) -> Int 범위(range)를 매개변수로 범위 안에 있는 값을 랜덤하게 Int 값을 반환해 준다. 때문에, 중복해 같은 값이 나올 수 있다. for _ in 1...3 { print(Int.random(in: 1.. Element? 매개변수는 없으며 옵셔널 타입의 요소를 반환해 준다. 때문에, 사용에 있어 옵..
[Swift]Class, Instance, Object 알아보기
·
iOS&Swift
안녕하세요. 오늘은 Class, Instance, Object에 대해 알아볼까 해요.🧐 객체지향(OOP)에선 중요한 내용이라고 생각이 돼서 이번에 한번 정리를 해보려 합니다. 때문에 이번 내용이 Swift에 3번째 이야기가 될 것 같아요. 먼저, Class Class란 객체지향에서 Objact를 만들기 위한 틀!!! 때문에 Class에는 기능에 필요한 각종 메소드와, 맴버변수들이 포함되어 있다. class Person { var myName: String = "이름" var myAge: Int = 0 init (myName: String, myAge: Int) { self.myName = myName self.myAge = myAge } func printInfo() { print("나의 이름은 \(my..
[Swift]옵션널 기본
·
iOS&Swift
스위프트를 배우면서 배운 것을 기록하려 첫 글을 올린 후 2주 만에 글을 써보내요. 그간 ios를 배우려 부트 캠프도 지원하였고, 회사 면접도 보았으며, 자바를 이용하여 안드로이드 토이프로젝트를 만드느라 두 번째 글을 올리는데 2주라는 시간이 흘렀네요. 이번엔 스위프트 기본 문법을 배우며 낯 썰게 느껴진 옵션널에 대해 글을 남겨놓으려 합니다. 스위프트에 공식 문서에 옵션널은 "상수 또는 변수가 nil을 가질 수 있음을 나타냄"이라고 쓰여있다. 때문에 아래와 같은 장점이 있다. nil 가능성을 코드로 표현가능 변수 또는 상수가 nil 값을 가질 수 있는지 없는지 알 수 있기에 효율적이고,오류에 대한 안전한 코딩 가능 옵셔널은 enum Optional : ExpressibleByNillLiteral { ca..