분류 전체보기

· APP/Swift
프로퍼티 감시자 프로퍼티 감시자를 사용하면 프로퍼티 값이 변경될 때 원하는 동작을 수행할 수 있습니다. 값이 변경되기 직전에 willSet블럭이, 값이 변경된 직후에 didSet블럭이 호출됩니다. 둘 중 필요한 하나만 구현해 주어도 무관합니다. 변경되려는 값이 기존 값과 똑같더라도 프로퍼티 감시자는 항상 동작합니다. willSet 블럭에서 암시적 매개변수 newValue를 사용할 수 있고, didSet 블럭에서 암시적 매개변수 oldValue를 사용할 수 있습니다. 프로퍼티 감시자는 연산 프로퍼티에 사용할 수 없습니다. struct Money { // 프로퍼티 감시자 사용 var currencyRate: Double = 1100 { willSet(newRate) { print("환율이 \(currency..
· APP/Swift
프로퍼티 프로퍼티는 클래스, 구조체, 열거형과 연관된 값입니다. 타입과 관련된 값을 저장할 수도, 연산할 수도 있습니다. 프로퍼티의 종류 인스턴스 저장 프로퍼티 타입 저장 프로퍼티 인스턴스 연산 프로퍼티 타입 연산 프로퍼티 지연 저장 프로퍼티 이번 파트에서는 지연 저장 프로퍼티를 제외한 저장 프로퍼티와 연산 프로퍼티에 대해 알아봅니다. 정의와 사용 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있습니다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있습니다. 연산 프로퍼티는 var로만 선언할 수 있습니다. 연산프로퍼티를 읽기전용으로는 구현할 수 있지만, 쓰기 전용으로는 구현할 수 없습니다. 읽기전용으로 구현하려면 get 블럭만 작성해주면 됩니다. 읽기전용은 get블럭을 생략할 수 있습니다. 읽..
클로저 표현이 한줄에 너무 여러 표현 들어가서 손쉽게 표현 할수 있는 방법 있음 너무나 다양한 표현이 있기 때문에 적당한 선에서 축약 문법 사용하는게 좋음 클로저 고급 (표현 방법들) 후행 클로저 반환타입 생략 단축 인자이름 암시적 반환 표현 //MARK: - 후행 클로저 // 클로저가 함수의 마지막 전달인자라면 // 마지막 매개변수 이름을 생략한 후 // 함수 소괄호 외부에 클로저를 구현할 수 있습니다 // calculate 라는 함수에 method라는 이름으로 클로저를 넘겨줌 func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) // 함수에서 전달 받은 클로저를 호출 } var result: Int ..
· APP/Swift
클로저는 코드의 블럭입니다. 일급시민(first-citizen)으로, 전달인자, 변수, 상수 등으로 저장, 전달이 가능합니다. 함수는 클로저의 일종으로, 이름이 있는 클로저라고 생각하면 됩니다. 기본 클로저 문법 { (매개변수 목록) -> 반환타입 in 실행 코드 } 매개 변수 필요없으면 () 로만 사용해도 됨 반환타입 없으면 void 사용 // 함수를 사용한다면 func sumFunction(a: Int, b: Int) -> Int { return a + b } var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) // 3 //클로저의 사용 // sum이라는 변수에 클로저를 할당 var sum: (Int, Int) -> Int = { (a: In..
· APP/Swift
swift 에서 class, 구조체, 열거형을 살펴보면 class 전통적인 OOP관점에서의 클래스 와 크게 다른점 없음 단일상속 : 이게 가능함 (인스턴스/타입)메서드 (인스턴스/타입) 프로퍼티 참조타입 Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성 Struct C 언어 등의 구조체보다 다양한 기능 상속 불가 (인스턴스/타입)메서드 (인스턴스/타입) 프로퍼티 값 타입 swift의 대부분의 큰 뼈대는 모두 구조체로 구성 Enum 다른 언어의 열거형과 많이 다른 존재 상속 불가 (인스턴스/타입)메서드 (인스턴스/타입) 연산 프로퍼티 값 타입 Enumeration 약자 유사한 종류의 여러값을 유의미한 이름으로 한 곳에 모아 정의 예) 요일, 상태값, 월(Month)등 열거형 자체가 하나의 데이..
· APP/Swift
클레스는 구조체와 매우 유사함 구조체는 값 타입인 반면 클래스는 참조 타입임 정의 문법 클래스는 참조 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다. swift의 클레스는 다중 상속이 되지 않는 다는 것이 특징임 class 이름 { /* 구현부 */ } 클레스도 구조체와 유사하게 프로퍼티와 메소드를 가질수 있음 프로퍼티 및 메서드 구현 클래스의 타입 메서드는 두 종류가 있습니다. 상속 후 재정의가 가능한 class 타입메서드, 상속 후 재정의가 불가능한 static 타입메서드가 있습니다. 자세한 내용은 상속 부분에서 다시 다룹니다. class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutablePropert..
· APP/Swift
정의 문법 스위프트 대부분의 타입은 구조체로 이루어져 있습니다. 구조체는 값 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다. struct 이름 { /* 구현부 */ } */ 프로퍼티 및 메서드 구현 // 프로퍼티는 구조체 안에 들어가는 인스턴스 변수라고 생각 // 메서드는 안에 들어가 있는 함수라고 생각 struct Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 가변, 불변 프로퍼티는 인스턴스 프로퍼티라고 생각하면 됨 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() {..
· APP/Swift
옵셔널 값 추출 방법 2가지 • Optional Binding - 옵셔널 바인딩 • Force Unwrapping - 강제 추출 Optional Binding 옵셔널의 값을 꺼내오는 방법 중 하나 nil 체크 + 안전한 값 추출 ex 인트형을 보관하는 상자를 하나 더 보호막으로 감쌓아 준다고 생각하면됨 상자안에 값이 있습니까? 있으면 추출 없으면 지나침 //MARK:- Optional Binding func printName(_ name: String) { // 일반 스트링 값 가지려고 했는데 print(name) } var myName: String? = nil //printName(myName) // 전달되는 값의 타입이 다르기 때문에 컴파일 오류발생 그래서 if-let 방식을 통해 옵셔널 바인딩 해..
개발자 aloe
'분류 전체보기' 카테고리의 글 목록 (12 Page)