iOS/Swift 40

[Swift] 클래스의 생성자와 소멸자

클래스를 사용할 때 생성자와 소멸자는 많이 사용됩니다. // 인스턴스의 생성과 소멸 // 생성자와 소멸자 인듯하다. // constructor -> init class Person { var name: String var age: Int var nickName: String? // 만약 require한 값이 아니라면 ?로 옵셔널 줄 수 있다. // var nickName: String? // 생성자 init (name: String, age:Int, nickName: String) { // 아래 생성자와 중복되는 부분이 있음으로 다음 주석과 같이 변경 가능 // 단, 자신의 init을 쓰려면 앞에 convenience를 붙여야 한다. // self.init(name: name, age: age) self..

iOS/Swift 2022.01.24

[Swift] 클래스의 상속

class의 사용에서 상속은 중요한 개념입니다. // 클래스의 상속 // 상속 //class childClass: parentClass { // //} class Person { var name: String = "" func selfIntroduce() { print("저는 \(name) 입니다") } // final을 이용하면 오버라이딩 할 수 없다. final func sayHello(){ print("hello") } // 타입 메서드 - 인스턴스를 만들지 않아도 사용이 가능하다. // static을 이용하면 재정의 할 수 없다. static func typeMethod() { print("type method - static") } // class를 이용하면 재정의가 가능하다. // class는..

iOS/Swift 2022.01.24

[Swift] 클로저

변수, 상수, 전달인자로 전달 가능 함수도 클로저의 일종이라 보면 된다. // 클로저 // in 이라는 키워드로 매개변수와 코드 분리 // 예시 var sum: (Int, Int) -> Int = { (a:Int, b:Int) -> Int in return a + b } // 콜백으로도 사용이 가능하다/ // a, b를 받아 method로 전달된 클로저에 전달해 계산 func sumContainer(c: Int, d: Int, method: (Int, Int) -> Int) -> Int { return method(c, d) } print(sumContainer(c: 1, d: 2, method: sum)) // 후행 클로저 // 함수의 마지막 전달 인자가 클로저이면 빼낼수 있음 var res: Int ..

iOS/Swift 2022.01.23

[Swift] 열거형

C에도 열거형이 있는듯 한데 Swift에서 처음 알게 된 개념입니다. struct 또는 class 과 비슷하게 사용할 수 있습니다. // 열거형 // 하나의 타입이다. enum Numbers{ case one case two case three case four } var specificNumber: Numbers = Numbers.two print(specificNumber) // two specificNumber = .four // 축약 가능 print(specificNumber) // four // switch문 사용에 용이 switch specificNumber{ case .one, .two, .three: print(1,2,3) case .four: print(4) // 열거형의 모든 값을 정해..

iOS/Swift 2022.01.23

[Swift] 구조체, 클래스, 프로퍼티, 프로퍼티 감시자

구조체라고 하니 C가 생각납니다.. 구조체 // 구조체 struct a { // 구현! // 일반적 프로퍼티 var b: Int = 10 // 타입 프로퍼티 // 타입 자체에서 접근 가능 전역 클래스 전역 변수 같은건가 static var c: Int = 20 // 마찬가지로 func와 static func를 선언할 수 있다. func d() { // } static func e() { // } } // 값 기반이기에 let으로 struct를 선언하면 프로퍼티 값이 var여도 바꿀수 없다. let example: a = a() a.b = 20 // 에러 클래스 // 다른 클래스와 다른 점은 다중 상속이 불가능하다는 것 class example { // 일단 위의 구조체와 다른 부분은 같다. var cha..

iOS/Swift 2022.01.22

[Swift] 옵셔널에 대해

옵셔널은 nil을 할당할 수 있는지 알려주는 옵션이라고 볼 수 있다. ?로 기본적으로 옵셔널 사용이 가능하면 !로 암시적 옵셔널을 사용할 수도 있다. // 옵셔널 - 값이 있을 수도 있고 없을 수도 있다. // nil이 들어올 수 있다 없다 설정 가능 // 옵셔널 선언 예시 // 다른 데이터 타입과는 다름으로 다른 타입과 연산 불가 var b: Int? // 직관적인 표현법 - b에는 nill이 할당될 수 있다. // nil을 넣어두고 접근 할 수 없는 옵셔널 var c: Int! // ?와는 조금 다른 옵셔널 // 옵셔널 추출 -> 옵셔널은 그냥 할당하면 다른 타입이라 에러 발생 // 그래서 if 문을 이용한다. var a: String? = nil if let ex:String = a{ print("..

iOS/Swift 2022.01.22

[Swift] 조건문, 반복문

조건문 - if와 switch , 반복문에 대해 알아보도록 하겠습니다. 조건문 // 조건문 if // 기본적으로 문법은 자바 스크립트와 비슷한듯 하다. // 하지만 주의할 점은 무조건 Bool 타입을 사용해야 한다는 것. // 그냥 자바 스크립트 처럼 작성했다가는 에러 폭탄을 맞을지도 모른다. // 소괄호는 생략 가능 if(true){ // } else if (true){ // } else { // } // 조건문 switch // c++ 처럼 break를 걸어주지 않아도 된다. // case 실행문 안에 fallthrough를 추가해 자동으로 break 되지 않게 할 수 있다. let someInterger: Int = 50 switch someInterger { case 0: print(0) case..

iOS/Swift 2022.01.22

[Swift] 함수

Swift를 이제 시작했는데 다른 언어의 특성을 섞어 놓은 느낌이 듭니다. 예를 들어 모순적이지만 c++의 불확실성 제거와 파이썬의 용인은 섞어놓은 느낌이랄까...? 암튼 함수에 대해 알아보겠습니다. 함수의 선언과 사용 // 함수 선언 // func 이름(매개변수: 타입) -> 함수 반환 타입{ } func name(a: Int, b: String) -> Int{ return 0 } // 반환 값이 없으면 -> 반환 부분 생략 가능 또는 Void 쓰기 // 함수 호출 name(a: 100, b: "String") 함수 조금 더 자세히 // 매개변수 Default 값 func a(a: Int , b: Int = 100) -> Void{ print(a, b) } a(a: 10) // 전달인자 // 이건 좀 ..

iOS/Swift 2022.01.22

[Swift] Array, Dictionary, Set

Array, Dictionary, Set 의 개념 자체는 파이썬과 비슷하기에 생략 Array // 배열 선언 방법 // let을 사용해 선언하면 js와 다르게 append나 remove가 안된다. var a: array = [데이터 타입]() var b: [String] = [String]() var c: [Character] = [] // int 타입의 배열 var a: Array = Array() // 배열에 값 추가 a.append(값) // 특정 값을 가지고 있는지 확인 a.contains(값) // true or false // 값 제거 a.remove(a: 인덱스) // 특정 인덱스 값 제거 a.removeLast() // 마지막 값 제거 a.removeAll() // 전체 제거 // leng..

iOS/Swift 2022.01.22

[Swift] 상수, 변수, 데이터 타입

상수와 변수 익숙해지지 않으면 자바스크립트와 좀 헷갈리는 부분일 것 같습니다. 상수는 let 변수는 var // 상수 let 이름: 타입 = 값 // 변수는 let을 var로만 바꾸면 된다. var 이름: 타입 = 값 신기하게도 Swift에서의 상수는 한번 선언만 해두고 값을 나중에 '딱 한번' 넣어줄 수 있습니다. let a: int // 값을 넣을 수 있다. a = 10 // 이후부터는 오류 a = 20 데이터 타입 // Bool // 0이나 1은 할당할 수 없다. let a: Bool = true // Int // 정수 let b:Int = 10 // Uint // 양의 정수(부호가 없는 정수) -> 음의 정수를 넣으면 에러 let c:Uint = b // Uint에 Int로 할당된 것을 넣으면 에..

iOS/Swift 2022.01.22