본문 바로가기

반응형

Mobile/Swift

(21)
[Swift - 문법] 프로퍼티 감시자(Property observers) 프로퍼티 감시자 - 프로퍼티 값이 변하는 것을 감시 - 프로퍼티의 값이 변할 때 값의 변화에 따른 특정 작업을 실행 - 프로퍼티 감시자는 저장 프로퍼티에 적용할 수 있으며 부모클래스로부터 상속받을 수 있습니다. 프로퍼티 감시자에는 "willSet" 과 "didSet" 두 메소드가 존재합니다. willSet : 프로퍼티의 값이 변경되기 전에 호출돼서 변경될 값을 "매개변수"로 갖습니다. didSet : 프로퍼티의 값이 변경된 후에 호출돼서 변경되기 전의 값을 "매개변수"로 갖습니다. 아래 코드에서 예시를 확인하시겠습니다. class CoinPrint { var coin: Int = 0 { willSet { // 편의상 print 를 두 번 실행하도록 했습니다. print("이 부분은 값이 변경되기 전에 호..
[Swift - 문법] 프로퍼티(Property) - 2. 연산 프로퍼티 https://axce.tistory.com/147 [Swift - 문법] 프로퍼티(Property) - 1. 저장 프로퍼티 프로퍼티: 클래스, 구조체 또는 열거형 등에 관련된 값 메소드: 특정 타입에 관련된 함수 1. 프로퍼티 프로퍼티는 크게 세가지 종류의 프로퍼티가 있습니다. 1. 저장 프로퍼티: 인스턴스의 변수 axce.tistory.com 1. 연산 프로퍼티 연산 프로퍼티는 실제 값을 저장하는 프로퍼티는 아닙니다. 단지 특정 상태에 따른 값을 연산하는 프로퍼티입니다. 인스턴스 내/외부의 값을 연산해 적절한 값을 돌려주는 접근자(getter)의 역할이나 은닉화된 내부의 프로퍼티 값을 간접적으로 설정하는 설정자(setter)의 역할을 할 수도 있습니다. 클래스, 구조체, 열거형에 연산 프로퍼티를 정의..
[Swift - 문법] 프로퍼티(Property) - 1. 저장 프로퍼티 프로퍼티: 클래스, 구조체 또는 열거형 등에 관련된 값 메소드: 특정 타입에 관련된 함수 1. 프로퍼티 프로퍼티는 크게 세가지 종류의 프로퍼티가 있습니다. 1. 저장 프로퍼티: 인스턴스의 변수 또는 상수로 구조체와 클래스에서만 사용할 수 있습니다. 2. 연산 프로퍼티: 값을 저장한 것이 아닌 특정 연산을 실행한 결괏값으로 클래스, 구조체, 열거형에 쓰일 수 있습니다. 3. 타입 프로퍼티: 특정 타입에 사용되는 프로퍼티입니다. 2. 저장 프로퍼티 인스턴스의 변수 또는 상수로 구조체와 클래스에서만 사용할 수 있습니다. (1) 기본 저장 프로퍼티 // 좌표 struct CoordinatePoint { var x: Int var y: Int } // 구조체에는 기본적으로 저장 프로퍼티를 매개변수로 갖는 이니셜라..
[Swift - 문법] 구조체와 클래스 1. 구조체 구조체는 struct 키워드로 정의합니다. 구조체를 정의한다는 것은 새로운 타입을 생성해주는 것과 마찬가지이기 때문에 기본 타입 이름처럼 대문자 카멜케이스를 사용해 이름을 짓습니다. 구조체는 상속이 되지 않습니다. struct [구조체 이름] { [프로퍼티와 메소드] } struct Person { // "이름" 부분은 초기값을 정해주는 부분입니다. // 이렇게 초기값을 정해주면 인스턴스를 생성할 때 값을 생략할 수 있습니다. var name: String = "이름" var age: Int var height: Int var weight: Int } // 구조체의 인스턴스 생성 및 초기화 var axce: Person = Person(name: "Sudon Noh", age: 31, hei..
[Swift - 문법] 함수 1. 기본 함수 스위프트에서는 매개변수의 타입이 다르면 같은 이름의 함수를 여러 개 만들 수 있습니다. 또 매개변수의 개수가 달라도 같은 이름의 함수를 만들 수 있습니다. func hello(name: String) -> String { return "Hello \(name)!" } let helloStark: String = hello(name: "Stark") print(helloStark) // "Hello Stark!" func introduce(name: String) -> String { "제 이름은 " + name + "입니다." } let helloThor: String = introduce(name: "Thor") print(helloThor) // 제 이름은 Thor입니다. func p..
[Swift - 문법] 반복문(for-in, while) 1. for-in for [임시 상수] in [Sequence Item] { [실행 코드] } (1) 기본 사용 코드 for i in 0...2 { print(i) } // 0 // 1 // 2 (2) if문 사용 for i in 0...5 { if i.isMultiple(of: 2) { print(i) } print("\(i) == 홀수") } """ 0 0 == 홀수 1 == 홀수 2 2 == 홀수 3 == 홀수 4 4 == 홀수 5 == 홀수 """ ----------------------------------------------------------------- for i in 0...5 { if i.isMultiple(of: 2) { print(i) continue // continue 키워드..
[Swift - 문법] 조건문 (if , switch) 1. if 스위프트의 if 구문은 조건의 값이 반드시 Bool 타입이어야 합니다. let first: Int = 5 let second: Int = 7 if first > second { print("first > second") } else if first < second { print("first < second") } else { print("first = second") } 2. switch Swift 에서의 switch 구문 특징 - break 키워드 사용은 선택사항 입니다. - case 내부의 코드를 모두 실행하면 break 없어도 switch 구문이 종료됩니다. - 다른 언어에서 사용하던 break 없이 연속 실행하던 트릭을 swift에서는 사용할 수 없습니다. - case를 연속 실행하고자..
[Swift - 문법] 삼항 조건 연산자와 범위 연산자 1. 삼항 연산자 Question ? A : B Question 값이 참이면 A를 반환, 거짓이면 B를 반환 var valueA: Int = 3 var valueB: Int = 5 var biggerValue: Int = valueA > valueB ? valueA : valueB print(biggerValue) // 5 valueA = 0 valueB = -3 biggerValue = valueA > valueB ? valueA : valueB print(biggerValue) // 0 var stringA: String = "" var stringB: String = "String" var resultValue: Double = stringA.isEmpty ? 1.0 : 0.0 print(resul..
[Swift - 문법] 열거형 타입 열거형 열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입입니다. 프로그래머가 정의한 값 외에는 추가 혹은 수정이 불가능한 타입입니다. 열거형을 사용하는 경우는 아래와 같습니다. - 제한된 선택지를 주고 싶을 때 - 정해진 값 외에는 입력받고 싶지 않을 때 - 예상된 입력 값이 한정되어 있을 때 열거형 선언 방법 enum [열거형 이름] { case [선택지 1] case [선택지 2] ... } // 열거형 선언 enum Heroes { case ironman case hulk case captain case blackwidow case thor case spiderman case antman } // 한 줄 표현 enum Heroes { case ironman, hulk, captain, black..
[Swift - 문법] 튜플과 배열 1. 튜플(Tuple) 튜플은 '지정된 데이터의 묶음'이라고 할 수 있습니다. // String, Int, Double, String 값을 갖는 튜플 var name: String = "Tony Stark" var age: Int = 49 var height: Double = 182.5 var nickName: String = "Ironman" var person: (String, Int, Double, String) = (name, age, height, nickName) print(person) // ("Tony Stark", 49, 182.5, "Ironman") // Index로 값 접근 person.1 = 50 person.2 = 190.0 print(person) // ("Tony Stark"..

반응형