개발/Ios(Swift)
IOS 스위프트(Swift) 문법 - 타입캐스팅
타입 캐스팅이란? 인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼 클래스나 서브 클래스로 취급하는 방법입니다. 타입 캐스팅 연산자로 is, as를 이용하여 구성합니다. class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song: MediaItem { var artist: String init(name: String, artist:..
IOS 스위프트(Swift) 문법 - 상속
상속이란? 부모가 자식에게 재산을 물려주는 행위입니다. class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpeed) miles per hour" //"traveling at 30.0 miles per hour in gear 2" } func makeNoise() { print("speaker on") //"speaker on" } } /* class 클래스 이름: 부모클래스 이름 { //하위 클래스 정의 } */ class Bicycle: Vehicle { var hasBasket = false } var bicycle = Bicycle() //Bicycle bicycle.curren..
IOS 스위프트(Swift) 문법 - 클래스와 구조체의 차이
1. 클래스와 구조체의 공통점 - 값을 저장할 프로퍼티를 선언할 수 있습니다. - 함수적 기능을 하는 메서드를 선언할 수 있습니다. - 내부 값에 . 을 사용하여 접근할 수 있습니다. - 생성자를 사용해 초기 상태를 설정할 수 있습니다. - extension을 사용하여 기능을 확장할 수 있습니다. - Protocol을 채택하여 기능을 설정할 수 있습니다. 2.클래스와 구조체의 차이점 2-1. 클래스 - 참조 타입입니다. - ARC로 메모리를 관리합니다. - 상속이 가능합니다. - 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있습니다. - deinitdㅡㄹ 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있습니다. -같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤 값을 변경 시..
IOS 스위프트(Swift) 문법 - 프로퍼티
Properties(프로퍼티) 란? 클래스, 구조체 또는 열거형 등에 관련된 값을 뜻한다. 프로퍼티는 세가지 종류가 있습니다. 저장 프로퍼티 - 인스턴스의 변수 또는 상수를 의미 연산 프로퍼티 - 값을 저장하는 것이 아니라 특정 연산을 실행하는 결과 값을 의미 타입 프로퍼티 - 특정 인스턴스에서 사용되는 것이 아닌 특정 타입에서 사용되는 프로퍼티 //저장프로퍼티 struct Dog { var name: String var gender: String } var dog = Dog(name: "gunter", gender: "Male") //Dog print(dog) //"Dog(name: "gunter", gender: "Male")\n" dog.name = "홍길동" //Dog let dog2 = Dog..
IOS 스위프트(Swift) 문법 - 초기화 구문 init
초기화(initialization) 란? 클래스 구조체 또는 열거형의 인스턴스를 사용하기 위한 준비 과정입니다. struct User { var nickname: String = "Gunter" var age: Int = 0 init() { //인스턴스가 생성되면 호출 } } let user = User() /* init(매개변수: 타입, ...) { //프로퍼티 초기화 //인스턴스 생성시 필요한 설정을 해주는 코드 작성 } */ class User { var nickname: String var age: Int init(nickname: String, age: Int) { self.nickname = nickname self.age = age } init(age: Int) { self.nickname ..
IOS 스위프트(Swift) 문법 - 클래스
class 클래스 이름 { 프로퍼티와 메서드 } class Dog{ var name: String = "" var age: Int = 0 init(){ } func introduce() { print("name \(name) age \(age)") //"name CoCo age 3\n" } } var dog = Dog() //Dog dog.name = "CoCo" //Dog dog.age = 3 //Dog dog.name //"CoCo" dog.age //3 dog.introduce() //Dog
IOS 스위프트(Swift) 문법 - 구조체
구조체? 클래스? 프로그래머가 데이터를 용도에 맞게 표현하고자 할 때 사용합니다. 프로퍼티와 메소드를 사용해서 구조화된 데이터와 기능을 가질 수 있어 하나의 새로운 사용자 정의 데이터 타입을 만들어 주는 것입니다. 스위프트에서는 클래스와 구조체 문법과 사용법이 거의 같습니다. 다른 점으로는 구조체 인스턴트는 값 타입, 클래스 인스턴트는 참조 타입으로 다른 점이 있습니다. struct 구조체 이름 { 프로퍼티와 메서드 } struct User { //변수, 상수, 함수의 이름은 소문자로 시작하는 카밀 표기법, 구조체,클래스의 이름은 대문자로 시작하는 파스칼 표기법 var nickname : String var age : Int func information(){ print("\(nickname) \(age..
IOS 스위프트(Swift) 문법 - 옵셔널 바인딩
옵셔널 해제 방법은 크게 두가지가 있습니다. 명시적 해제 - 강제 해제, 비강제 해제(옵셔널 바인딩) 묵시적 해제 - 컴파일러에 의한 자동 해제, 옵셔널의 묵시적 해제 //강제 해제 var number : Int? = 3 //3 print(number) //"Optional(3)\n" print(number!) //"3\n" //!를 붙이면 강제 해제를 한다 //비강제 해제(옵셔널 바인딩) if let result = number { //조건문을 이용하여 추출 print(result) //"3\n" } else { } func test() { //guard문을 이용하여 true일때만 추출 let number: Int? = 5 //5 guard let result = number else { return ..