Swift 기초문법 27

Swift: 프로퍼티(property)

프로퍼티(property) : 클래스, 구조체 또는 열거형 등에 관련된 값을 뜻한다. 저장프로퍼티 : 인스턴스의 변수 또는 상수를 의미 연산프로퍼티 : 값을 저장하는게 아니라 특정연산을 실행하는 결과값 타입프로퍼티 : 특정인스턴스에서 사용되는게 아닌 특정타입에서 사용되는 프로퍼티 저장프로퍼티는 프로퍼티를 사용하는 가장 간단한 방법이다. 변수나 상수로 선언된 클래스나 구조체의 인스턴스의 일부분으로 저장되는 것이다. 강아지라는 구조체를 하나 선언해보았다. 그리고, string타입을 갖는 변수 네임과 string타입을 갖는 상수를 구조체에 선언해보자. → struct Dog 라는 구조체를 정의하고, 블록안에 name이라는 변수와 gender라는 상수를 String값을 가지도록 선언해주었다. 이렇게 구조체 내에..

Swift 기초문법 2022.03.18

Swift: 인스턴스, 메소드, 프로퍼티 간단개념

인스턴스(instance) : Swfit에서 클래스, 구조체, 열거형에서 생성된 객체 // 예시 var seoul: busan = jeju() → seoul은 변수. busan은 변수뒤에 붙은 type. jeju가 인스턴스 다른언어에서는 객체라는 의미. 메소드(Method) : 특정타입의 클래스, 구조체, 열거형에 관련된 함수 class Counter { var count = 0 func increment() { count += 1// 카운트를 1씩증가한다. } func increment(by amount: Int) { count += amount// 지정된 정수만큼 증가시킨다. } func reset() {// 카운트를 0으로 재설정한다. count = 0 } } → Counter 라는 클래스를 정의하..

Swift 기초문법 2022.03.17

Swift: 초기화 구문 (init, deinit)

- 초기화란? 클래스 구조체 또는 열거형의 인스턴스를 사용하기 위한 준비 과정 → 이니셜라이저는 특정타입의 새로운 인스턴스가 생성될때 호출이 되는데 다음과 같이 User인스턴스가 생성되면 init( ) { } 블록안에 코드가 실행된다. 이 때 프로퍼티들의 초기값을 설정해주거나 새 인스턴스를 사용하기전에 필요한 설정을 해주면 된다. → 초기화 구문은 위코드와 같이 정리할 수 있다. 클래스나 구조체 열거형 안에 정의할 수 있고, init키워드를 적어주고 소괄호를 열고 닫아 매개변수 들을 적어주면 된다. 그리고 init 코드블록안에는 프로퍼티를 초기화하거나 인스턴스를 생성할때 필요한 설정들을 해주는 코드들을 작성해주면 된다. 초기화 구문은 반드시 init키워드를 사용해야만 하고, 매개변수의 갯수, 이름, 타입..

Swift 기초문법 2022.03.17

Swift: 클래스와 구조체의 차이

클래스와 구조체의 공통점 값을 저장할 프로퍼티를 선언할 수 있다. 함수적 기능을 하는 메서드를 선언할 수 있다. 내부값에 .(점)을 사용하여 접근할 수 있다. 생성자를 사용해 초기 상태를 설정할 수 있다. extension을 사용하여 기능을 확장할 수 있다. Protocol을 채택하여 기능을 설정할 수 있다. 클래스 참조 타입 ARC로 메모리를 관리 상속이 가능 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있다. deinit을 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있다. 같은 클래스 인스턴스를 여러개의 변수에 할당한 뒤 값을 변경시키면 모든 변수에 영향을 준다.(메모리가 복사됨) 구조체 값 타입 구조체 변수를 새로운 변수에 할당할때마다 새로운 구조체가 할당된다. 즉 같..

Swift 기초문법 2022.03.17

Swift: 클래스 (class)

클래스 : class 클래스이름 { 프로퍼티와 메서드 } 클래스는 참조타입이다. 참조 타입이란, 변수나 상수에 값을 할당하거나 함수에 인자로 전달될 때 그 값이 복사되지 않고 참조된다는 의미이다. Call by reference : 할당 또는 파라미터 전달 시에 객체를 가리키고 있는 메모리의 주소값이 복사 된다. Heap Mermory 영역에 할당된다. 따라서 속도가 느리다. 런타임에 직접 allocate 하며 reference counting을 통해 deallocate가 필요하다. 상속이 가능하다. 런타임에 타입캐스팅을 통해 클래스 인스턴스에 따라 여러 동작이 가능하다. deinitializer가 존재한다. → 위 코드는 강아지의 정보를 구성하는 클래스 이다. 우선 class키워드를 Dog이라고 이름을..

Swift 기초문법 2022.03.17

Swift: 구조체(struct)

구조체 : struct 구조체 이름 { 프로퍼티와 메서드 } 구조체는 값 타입(Value Type) 이다. 값 타입이란 함수에서 상수나 변수로 전달될 때 그 값이 복사되서 전달된다. Call by value: 할당 또는 피라미터 전달시 value copy가 일어난다. 값 타입이기 때문에 멀티 스레드 환경에서 공유 변수로 인한 문제를 일으킬 확률이 적다. Stack Memory 영역에 할당되므로 속도가 빠르다. Scope based lifetime: 컴파일 타임에 컴파일러가 언제 메모리를 할당/해제할지 정확히 알고 있다. Data loclity: CPU 캐쉬 히트율이 높다. 상속이 불가능하다. AnyObject로 타입캐스팅이 불가하다. → 유저의 정보를 구성하는 정보의 구조체에 대해 알아보자. 구조체는 s..

Swift 기초문법 2022.03.17

Swift: 옵셔널(optional)

옵셔널 : 값이 있을수도 있고 없을수도 있다. 예문) var name: String = "안녕하세요" → 값이 없는 경우 var name: String? = nil 여기서 nil은 값이 없는 경우를 뜻한다. 다른 언어에서는 null이라고 부른다. 이번에는 정수형의 또 다른 예를 확인해보자. var number: Int = 7 // 만약 답이 없다면 var number: Int? = nil → 답이 없는 경우에 nil을 사용한다. 하지만 모든 변수에 nil을 넣을 수 있는건 아니다. 위코드를 보면 네이밍을 한 변수에 nil을 넣게 되면 에러가 발생한다. 그러면 변수에 nil을 지정하려면 어떻게 해야할까? 타입 뒤에 "?"을 넣는 방법을 통해 답이 있을수도, 없을수도 있는 변수를 정의하면 된다. 이렇게 정의..

Swift 기초문법 2022.03.17

Swift: 반복문(for-in, forEach, while, repeat-while)

반복문 : for-in → 기본적으로 for-in을 사용할때는 루프상수, 순회대상, 실행할 코드가 필요하다. 루프상수 구문이 반복될때마다 순회대상에 포함하는 아이템을 넘겨받아 저장해서 실행 블록 내에 사용할 수 있게 해주는 역할을 한다. 루프상수는 실행블록 내부에서만 사용이 가능하고, 순회대상에는 set, Array, Dictionary, 범위데이터, 문자열 같은 타입의 변수나 상수를 사용할 수 있다. 마지막으로 실행할 구문은 중괄호 안에 작성하면 된다. 범위데이터를 순회대상으로 사용하는 for-in 구문을 작성해보자 → 위 코드를 보면 for 루프상수에 i라는 상수를 적어주고, 이 루프상수의 순회대상구분은 in 이라는 키워드로 구분해주면 된다. 그리고 in뒤에 1...4(1에서4사이라는뜻) 까지 범위데..

Swift 기초문법 2022.03.16