전체 글 59

[Swift] assert와 guard

1. assert 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하게 할 수 있는 함수 assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용한다. var value = 0 assert(value == 0) value = 2 assert(value == 0, "값이 0이 아닙니다") 2. guard 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정하는 것 guard 문에 주어진 조건문이 거짓일 때 구문이 실행된다. guard 조건 else { // 조건이 false 면 else 구문이 실행된다. // return, throw, break를 통해 이 후 코드를 실행하지 않도록 한다. } func guardTest(value: Int?) { guard ..

Swift & iOS 2022.06.16

[Swift] 타입 캐스팅 (is, as)

타입 캐스팅이란? 인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼 클래스나 서브 클래스로 취급하는 방법 1. is 인스턴스의 타입을 확인한다. 2. as as? 조건부 형식 다운 캐스팅하려는 옵셔널 값으로 반환 as! 강제 형식 강제로 언래핑하여 값을 반환 따라서 반드시 성공할 것이라는 확신이 들 때만 사용해야 한다 3. is와 as의 예시 MediaItem을 정의하고 이를 상속받는 Movie, Song 클래스를 정의한다. 그 후 library 변수에 Movie와 Song 들을 넣어준다. class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem {..

Swift & iOS 2022.06.15

[Swift] 상속 (Inheritance)

상속이란? 부모가 자식에게 재산을 물려주는 행위 클래스가 다른 클래스로부터 메서드, 프로퍼티 또는 다른 속성들을 상속받는 것 다른 클래스에서 상속받지 않은 클래스를 베이스 클래스라고 한다. final로 정의하게 되면 오버라이드 불가능, super class 불가능 class 클래스 이름: 부모클래스 이름 { // 하위 클래스 정의 } 상속 예시 Vehicle 클래스를 먼저 정의한다. class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpeed) miles per hour" } func makeNoise(){ print("speaker on") } } Vehicle을 상속받는 Bicycl..

Swift & iOS 2022.06.15

[Swift] 프로퍼티 (Properties)

프로퍼티란? 클래스, 구조체, 열거형 등에 관련된 값이다. 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티에 대해 알아보자. 1. 저장 프로퍼티 인스턴스의 변수 또는 상수를 의미한다. 변수나 상수로 선언된 클래스나 구조체의 일부분으로 저장되는 것 인스턴스가 상수(let)로 선언되었다면, 구조체 내에 저장 프로퍼티는 변경 불가능하다. 구조체가 값 타입이고, 구조체 내부의 프로퍼티들이 모두 상수가 되기 때문 But, 클래스는 참조 타입이어서 인스턴스를 상수로 선언해도 프로퍼티의 값을 변경할 수 있다. struct Dog { var name: String let gender: String } var dog = Dog(name: "iku", gender: "Male") dog.gender = "Female" //..

Swift & iOS 2022.06.15

[Swift] 초기화 구문 (init, deinit)

1. init 클래스, 구조체, 열거형의 인스턴스를 사용하기 위한 준비 과정이다. 아래와 같이 정의할 수 있다. init(매개변수: 타입, ...) { // 프로퍼티 초기화 // 인스턴스 생성시 필요한 설정을 해주는 코드 작성 } 2. deinit deinit은 파라미터를 받을 수 없으며, 클래스 당 오직 하나만 선언할 수 있다. deinit { // 인스턴스 소멸시 필요한 설정을 해주는 코드 작성 } 인스턴스가 메모리에 해제되기 직전에 호출된다. 클래스 인스턴스와 관련하여 원하는 정리 작업을 하는 역할을 한다. 클래스 인스턴스에만 구현할 수 있다. 스위프트는 인스턴스가 더이상 필요하지 않으면 메모리에서 자동 소멸시킨다. nil을 넣으면 더 이상 필요 없다고 판단 후 메모리에서 지워버린다. 3. init..

Swift & iOS 2022.06.15

[Swift] 구조체와 클래스 (struct & class)

1. 구조체 struct 구조체 이름 { 프로퍼티와 메서드 } 프로퍼티와 메서드를 합해서 구조체, 클래스의 멤버라고 한다. 멤버 변수 -> 프로퍼티 멤버 함수 -> 메서드 구조체 예시 struct User { var nickname: String var age: Int func information() { print("\(nickname) \(age)") } } var user = User(nickname: "hammii", age: 25)// 구조체 안에 따로 생성자를 선언해두지 않아도, 기본적으로 값을 초기화 할 수 있는 생성자가 만들어진다. print(user.nickname) // hammii user.nickname = "하미" print(user.nickname) // 하미 user.infor..

Swift & iOS 2022.06.14

[Swift] 옵셔널이란? 옵셔널 바인딩이란?

1. 옵셔널이란? 옵셔널이란 값이 있을 수도 있고, 없을 수도 있는 것이다. 일반적인 프로그래밍 언어에서는 값이 null 인 변수에 접근하면 프로그램이 종료된다. 하지만, swift는 안정성이 장점이므로 옵셔널을 사용하면 값이 없는 변수에 접근해도 프로그램이 종료되지 않는다 ! 그렇다면 옵셔널은 어떻게 사용할까? nil 값이 들어갈 수 있는 변수에는 타입 뒤에 ? 를 붙인다. var name: String? // nil var optionalName: String? = "hammii" print(optionalName) // Optional("hammii") name 변수는 값을 넣어주지 않아서 nil 로 초기화되었고, optionalName 변수는 Optional 에 감싸 져서 출력되었다. 옵셔널 값은..

Swift & iOS 2022.06.09

[Swift] 반복문 (for-in, while, repeat-while)

반복문은 반복적으로 코드가 실행되게 만드는 구문이다. swift에서 사용하는 반복문 3가지를 알아보자. 1. for-in 문 for 루프상수 in 순회대상 { // 실행할 구문 } for-in 문 예시 for i in 1...4 { print(i) } let array = [1,2,3,4] for i in array { print(i) } 두 가지 경우 모두 결과적으로 1 2 3 4 로 출력된다. 2. while 문 while 조건식 { // 실행할 구문 } while 문 예시 var i = 0 while i < 4 { i += 1 print(i) } 이 결괏값 또한 위에서 봤던 for-in 문의 결괏값과 동일하게 나타난다. 3. repeat-while 문 swift의 repeat-while 문은 다른 ..

Swift & iOS 2022.06.09

[Swift] 조건문 (if-else, switch, guard)

조건문은 주어진 조건에 따라서 어플리케이션을 다르게 동작하도록 하는 것이다. swift에서 사용하는 조건문 3가지를 알아보도록 하자. 1. if-else 문 if 조건식1 { // 조건식1을 만족할 때 실행할 구문 } else if 조건식2 { // 조건식2를 만족할 때 실행할 구문 } else { // 아무 조건식도 만족하지 않을 때 실행할 구문 } if-else 문 예시 let animal = "cat" if animal == "dog" { print("강아지 사료 주기") } else if animal == "cat" { print("고양이 사료 주기") } else { print("해당하는 동물 사료가 없음") } 2. Switch 문 패턴 기반으로 실행된다. 하나의 패턴이 일치하면 스위치 문은 ..

Swift & iOS 2022.06.08

[Swift] 함수, 전달인자, 매개변수

함수란? 작업의 가장 작은 단위이자 코드의 집합 하나의 기능을 하나의 함수로 만드는 것이 좋다. Swift 함수 정의 방법 func 함수 이름(매개변수 이름: 매개변수 타입) -> 반환 타입 { return 반환 값 } Swift 함수 예시 func sum(a: Int, b: Int) -> Int { return a + b } sum(a: 5, b: 3) 매개변수가 없는 경우 func hello() -> String { return "hello" } 반환 값이 없는 경우 func hello() -> Void { } func hello() { } 전달인자 & 매개변수 보통 함수를 정의할 때 매개변수 이름과 전달인자 레이블을 같은 이름으로 사용할 수 있지만, 전달인자 레이블을 별도로 지정하면 함수 외부에서 ..

Swift & iOS 2022.06.08