본문 바로가기

728x90

IOS

[Swift] 프로퍼티 (Property) | 저장 프로퍼티 | 연산 프로퍼티 (get, set) | 프로퍼티 감시자 (Property Observer) 프로퍼티 (Property) 구조체, 클래스 열거형 내부에 구현할 수 있고, 열거형 내부에는 var로 연산 프로퍼티만 구현 가능 저장 프로퍼티 (stored property) 연산 프로퍼티 (computed property) var로만 선언할 수 있음! 두 종류로 선언 가능 - 읽기(get) 전용 프로퍼티 / 읽기(get) + 쓰기(set) 프로퍼티 (쓰기 전용은 불가!) set 블럭에서 암시적 매개변수 newValue 사용 가능 인스턴스 프로퍼티 (instance property) 타입 프로퍼티 (type property) 저장 프로퍼티와 연산 프로퍼티의 기능은 함수, 메서드, 클로저, 타입 등의 외부에 위치한 지역/전역 변수에도 모두 사용이 가능함 // 인스턴스 저장 프로퍼티 var name: Str.. 더보기
[Swift] 클로저 (Closure) | 클로저와 함수 | 후행 클로저 | 반환타입 생략 | 단축 인자이름 | 암시적 반환 표현 클로저 (Closure) 코드의 블럭 1급 시민 변수, 상수 등으로 저장, 전달인자로 전달이 가능 함수: 이름이 있는 클로저 { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저 (Closure)의 기본적인 사용 예시 // 클로저를 상수로써 선언 let add: (Int, Int) -> Int add = { (a: Int, b: Int) in return a + b } let substract: (Int, Int) -> Int substract = { (a: Int, b: Int) in return a - b } let divide: (Int, Int) -> Int divide = { (a: Int, b: Int) in return a / b } // 함수에 클로저를 인자로써 전달 func ca.. 더보기
[Swift] 클래스 vs 구조체 vs 열거형 | 값 (Value) vs 참조 (Reference) 01. 클래스 vs 구조체 vs 열거형 클래스 (Class) 전통적인 OOP 관점에서의 클래스 단일 상속 메서드/프로퍼티 참조 타입 Apple 프레임워크의 큰 뼈대는 모두 클래스로 구성 구조체 (Struct) C 언어 등의 구조체보다 다양한 기능 상속 불가 → 자신을 상속할 필요가 없거나, 상속받을 필요가 없을 때 사용! 메서드/프로퍼티 값 타입 → 참조가 아닌 복사! Swift의 대부분 큰 뼈대는 모두 구조체로 구성 열거헝 (Enum, Enumeration) 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의 → 열거형 자체가 하나의 데이터 타입! case 하나하나 전부 하나의 유의미한 값으로 취급 다른 언어의 열거형과는 많이 다른 존재 상속 불가 메서드/프로퍼티 값 타입 Class Stru.. 더보기
[Swift] 열거형 데이터란? | enum | case 원시값 (rawValue) | 열거형 데이터와 Switch 열거형 데이터 유사한 종류의 여러 값을 한 곳에 모아 정의한 것 enum 자체가 하나의 데이터 타입 - 열거형 데이터는 대문자 카멜케이스로 정의 열거형 데이터 내 그 자체의 고유의 값을 지니는 case의 이름은 소문자 카멜케이스로 정의 각 case는 한 줄에 개별로도, 한 줄에 여러개도 정의할 수 있음 enum 열거형이름{ case 이름1 case 이름2 case 이름3, 이름4, 이름5 // ... } // Example enum BoostCamp { case iosCamp case androidCamp case webCamp func printMessage(){ swtich self { case iosCamp, androidCamp: print("모바일 부스트 캠프입니다") case webCamp: .. 더보기
[Swift] 클래스 (Class) | 클래스와 구조체의 차이 | 클래스의 메서드 정의 | static 과 class 메서드의 차이 본 포스트를 읽기 전에 구조체 포스트를 먼저 읽으시면 클래스에 대해서 더욱 이해하기 쉬울 것임 https://thinking-developer.tistory.com/96#recentEntries [Swift] 구조체 (Structure) | 타입 프로퍼티 (Type Property) | 타입 메서드 (Type Method) 구조체 (Structure) 데이터 타입을 정의함 👉 대문자 CamelCase를 사용 프로퍼티와 메서드로 구성 프로퍼티: 구조체 내에 정의되어 있는 변수 메서드: 구조체 내에 정의되어 있는 함수 다른 언어의 클 thinking-developer.tistory.com 클래스란? 클래스는 참조 타입의 사용자 정의 타입임 타입 이름은 대문자 카멜케이스를 사용하여 정의 다른 언어들과 달리 S.. 더보기
[Swift] 구조체 (Structure) | 타입 프로퍼티 (Type Property) | 타입 메서드 (Type Method) 구조체 (Structure) 데이터 타입을 정의함 👉 대문자 CamelCase를 사용 프로퍼티와 메서드로 구성 프로퍼티: 구조체 내에 정의되어 있는 변수 메서드: 구조체 내에 정의되어 있는 함수 다른 언어의 클래스와 유사한 개념 만약 구조체의 인스턴스를 불변 인스턴스(let)로 생성한다면, 그 안에 있는 변수값들도 변경이 불가능! 메소드 호출은 가능함! struct 구조체명 { // 구현부 } 타입 프로퍼티(Type Property)와 타입 메서드(Type Method) 타입 자체가 사용할 수 있는 프로퍼티 및 메서드를 의미함 즉, 구조체에서 생성된 인스턴스가 아닌, 구조체 자체의 타입에서 사용할 수 있는 프로퍼티 / 메서드 static 키워드를 사용해서 정의함 static func 함수명() { . ... 더보기
[Swift] 옵셔널 (Optional) | 옵셔널 사용하는 방법 | 옵셔널 바인딩 (Optional Binding) | 강제 추출 (Force Unwrapping) 옵셔널이란? (Optional) 값이 있을 수도 있고, 없을 수도 있다는 개념 즉, nil의 가능성을 문서화하지 않고도 명시적으로 코드에서 표현할 수 있음 👉 시간 절약 예) 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않더라도 안심하고 사용 👉 효율적이고 안전 // someOptionalParam can be nil func someFunction(someOptionalParam: Int?) { // ... } //someParam must not be nil func someFunction(someParam: Int) { // ... } someFunction(someOptionParam: nil) someFunction(someParam: nil) // 오류발생 - 옵셔널이 아닌 타입에는 n.. 더보기
[Swift] 함수 function | 전달인자 레이블 | 가변 매개변수 | 함수형 프로그래밍 패러다임 | 일급객체 함수 Swift에서 함수의 기본적인 형태 반환값이 없을 때는 반환타입을 적는 곳에 Void라고 적어주면 됨 매개변수가 없으면 소괄호 () 안을 비워주면 됨 함수 구현부가 간단할 경우에는 중괄호 안에서 줄띄움을 할 필요가 없음 import Swift func 함수이름(매개변수이름: 매개변수타입) -> 반환타입 { 함수 구현부 return 반환값 } // example func sum(a: Int, b: Int) -> Int { return a + b } sum(a: 3, b: 5) 함수의 다양한 형태 매개변수에는 기본값을 넣어줄 수 있음 전달인자 레이블을 사용할 수도 있음 → 이를 통해서 같은 이름의 함수가 있더라도 구분할 수 있음 함수 외부에서 함수를 호출할 때는 전달인자 레이블을 꼭 붙여줘야 함 함수 내부 .. 더보기

728x90