[Swift] 14. 구조체와 클래스 비교하기
2020. 10. 20. 21:01
iOS/Swift
구조체와 클래스는 비슷한 점도 있지만 다른 점도 분명하게 있다고 생각한다. 그래서 구조체와 클래스를 비교해서 정리하기로 했다. 구조체와 클래스의 공통점 - 값을 저장하기 위한 프로퍼티를 정의한다. - 기능성을 제공하기 위한 메소드를 정의한다. // 구조체 정의 struct People { // 값을 저장하기 위한 프로퍼티 정의 var name: String = "jaynam" var age: Int = 28 var gender: String = "male" // 기능성 제공을 위한 메서드 정의 func getPeopleInfo() { print("Name : \(name) , Age : \(age) , Gender : \(gender)") } } // 클래스 정의 class Computer { // 값을..
[Swift] 13. 클래스(class) 기본
2020. 10. 20. 19:34
iOS/Swift
1. 클래스(class)란? 클래스는 "참조(reference) 타입" 이다. 클래스는 값 타입인 구조체와 달리 참조 타입인데 그럼 참조 타입이란? 값 타입은 데이터를 전달할 때 원본을 복사해서 전달했기 때문에 메모리 공간을 공유했지만 참조 타입은 데이터를 전달할 때 값의 메모리 위치를 전달한다. 타입 이름은 대문자 카멜케이스를 사용한다. 스위프트에서 클래스는 다중 상속이 되지 않는다. 스위프트에서 상속은 클래스 프로토콜 등에서 가능하고 열거형, 구조체는 상속이 불가능하다. 그리고 스위프트는 다중 상속을 지원하지 않는다는 점을 알아두자. 2. 클래스 문법 및 사용 클래스는 다음과 같이 사용할 수 있다. class 이름 { 구현부 } 구조체와 다르지 않아 보인다. 구조체는 struct 로 정의하고 클래스는..
[Swift] 12. 구조체(struct) 기본
2020. 10. 18. 20:20
iOS/Swift
1. 구조체란? 스위프트 대부분 타입은 구조체로 이루어져 있다. 구조체는 "값(value) 타입" 이다. 여기서 값 타입이란 무엇일까? 상수/변수에 할당되거나 함수에 들어갈 때 그 값이 복사되어 전달된다는 의미이다. 추가적으로, 복사되어 전달된다는 의미는 복사본을 생성한다는 것이 아니라 원본과 복사본이 메모리 공간을 공유하게 만든다는 점이다. 그래서 스위프트의 구조체는 다른 언어보다 더 기능성에 가깝다고 한다. 스위프트에서 모든 기본 타입은 값 타입이고, 구조체로써 구현된다. 그래서 대부분의 타입은 구조체로 이루어져있다고 한다. 타입 이름은 대문자 카멜케이스를 사용하여 정의한다. 2. 구조체 문법 및 사용 struct 이름 { 구현부 } 간단한 샘플을 만들어보았다. struct Sample { var m..
[Swift] 11. 옵셔널 추출 (Optional Unwrapping)
2020. 10. 8. 18:10
iOS/Swift
옵셔널 어떻게 꺼내서 활용하고 어떻게 사용할 수 있는지 공부해봤다. 옵셔널의 값을 꺼내는 방법에는 2가지 방법이 있다. 옵셔널 바인딩 | Optional Binding 옵셔널 안에 값이 있는지 확인한 후에 값을 가져오기 때문에 nil 체크를 함과 동시에 안전한 값을 추출할 수 있다. 옵셔널 바인딩은 if-let 구문을 사용해서 옵셔널의 값을 가져올 수 있다. if-let 구문 또는 if-var 구문을 통해서 옵셔널의 값이 잇는지 없는지 확인하고 가져온다는 뜻인데 예제를 통해 확인해볼 수 있다. func printName(_ name: String) { print(name) } var myName: String? = nil if let name: String = myName { printName(name)..
[Swift] 10. 옵셔널 (Optional)
2020. 9. 23. 20:25
iOS/Swift
스위프트에서의 핵심 개념이라고 하는 옵셔널에 대해서 공부해보았다. 다른 프로그래밍 언어에서는 찾아볼 수 없는 개념이기 때문에 다소 생소했다. 정확히 이해하고 다루는 데까지 시간이 좀 걸리지 않을까 생각한다. 1. Optional | 옵셔널 옵셔널, 그대로 해석해보면 '선택적인' 이라고 해석할 수 있다. 스위프트에서는 값이 '있을 수도, 없을 수도 있다' 는 것을 뜻한다. 옵셔널이 아닌 변수에 nil 값을 할당하려고 하면 아래와 같이 컴파일 오류가 발생한다. 그리고 옵셔널 타입을 사용하라고 "?"를 추가하라고 한다. 간단하게 생각해보면 옵셔널을 사용해서 값이 있는지 없는지 알 수 있다는 것이고 옵셔널이 아니라면 값이 꼭 있어야 한다는 것이다. 옵셔널이 없다면 확인해본 것과 같이 에러가 발생한다. nil 의..
[Swift] 9. 반복문 (for-in, while, repeats-while)
2020. 9. 16. 19:33
iOS/Swift
조건문 만큼이나 반복문도 많이 사용해왔다. 스위프트에서는 어떤 방법으로 반복문을 사용하는지 공부했다.1. for-in 반복문for-each 와 비슷한 구문이다. 딕셔너리의 경우 이터레이션 아이템으로 튜플이 들어온다. 기본 문법은 다음과 같다.for in { }items 에 배열을 넣으면 item 이란 변수로 반복문 내에서 사용할 수 있게 된다. item 을 통해 코드를 구현하면 된다.var integers = [1, 2, 3] for number in integers { print(number) } // ==================== 출력 결과 ==================== 1 2 3integers 라는 배열의 값을 number 라는 변수로 사용해서 출력할 수 있다.2. while 반복문w..
[Swift] 8. 조건문
2020. 9. 16. 18:26
iOS/Swift
프로그래밍을 하면서 가장 많이 썼던 것 중에 조건문과 반복문이 있다. 그 중 조건문에 대해서 기본적인 사용법에 대해서 간단하게 공부해봤다. 1. if-else 조건문 조건문 하면 프로그래밍을 공부했다면 누구나 알 수 있는 if-else 조건문이다. 기본 문법은 다음과 같다. if 조건 { 실행 코드 } else if 조건 { 실행 코드 } else { 실행 코드 } if, else if, else 모두 사용하지 않아도 된다. if 만 사용해도 되고 if 와 else if, else 를 조합해서 사용할 수 있다. 조건에는 단순 값을 넣을 수 없어 비교할 수 없기 때문에 항상 Bool 타입의 조건이 와야 한다. let someInteger = 100 if someInteger < 100 { print("10..
[Swift] 7. 함수 고급
2020. 9. 15. 20:48
iOS/Swift
함수를 어떻게 다양하게 사용할 수 있을지 공부해봤다. 1. 매개변수 기본값 매개 변수에 기본적으로 전달될 값을 미리 지정해둘 수 있다. 기본값을 갖는 매개변수는 매개변수 목록 중 뒤 쪽에 위치하는 것이 좋다. 매개변수 기본값을 어떻게 사용하는지 다음과 같이 확인할 수 있다. // 매개변수 기본값 func 함수이름 (매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 = 매개변수 기본값 ...) -> 반환타입 { return 반환값 } 말 그대로 변수의 값을 미리 지정해주어 사용한다는 것인데 예를 들어보면 func greeting(friend: String, me: String = "jaynam") { print("Hello \(friend)! I'm \(me)") } // 매개변수 기본값을 가..