Jessi :D

스위프트기본문법

스위프트기본문법

Swift - 상속

상속 - 위에서 아래로 내려받는다 class Friend { var name : String init(_ name : String) { self.name = name } func sayHi() { print("안녕?! 난 \(self.name)라고 해") } } 덮어쓰기가 되었다. class BestFriend : Friend { // override 를 통해 부모클래스의 메소드를 가져온다. override init(_ name : String) { // super 키워드로 부모의 메소드를 사용 super.init("베프 " + name) } override func sayHi() { super.sayHi() } } let myFriend = Friend("만쥬") myFriend.sayHi() // 안..

Swift - 객체 생성자, 해제자

클래스 → 빵틀, 객체(object) → 빵(메모리) 즉, 메모리에 올린다. (아직 이해가 덜 가지만, 이마저도 잊을까봐 일단 기록😭) 예제1 클래스 class MyFriend { var name : String init(_ name: String = "이름없음") { self.name = name print("init() MyFriend 가 메모리에 올라갔다.", self.name) } deinit { print("deinit() 메모리에서 사라짐 - ", self.name) } // deinit 검증을 위해 작성 var calledTimes = 0 let MAX_TIMES = 5 static var instancesOfSelf = [MyFriend]() class func destorySelf(obj..

Swift - 매개변수로서 클로저

1. 클로저를 매개변수로 completion 이라는 클로저를 매개변수로 가지는 메소드 정의 () -> Void ▼ 같음 ▼ func completion() { } func sayHi(completion: () -> Void) { print("sayHi() called") sleep(2) // 2초 잠깐 멈추기 // completion 클로저 실행 completion() } 메소드 호출부에서 이벤트 종료를 알 수 있다 1 sayHi(completion: { print("2초가 지났다. 1") }) 2 sayHi() { print("2초가 지났다. 2") } 3 sayHi { print("2초가 지났다. 3") } 2. 데이터를 반환 매개변수로서 데이터를 반환하는 클로저 (String) -> Void ▼ 같..

Swift - 클로저

클로저 자체는 메소드를 받아서 실행하는 것 String을 반환하는 클로저 let myName : String = { // myName 으로 들어간다 return "만쥬" }() print(myName) // 만쥬 매개변수를 가지고 String으로 반환하는 클로저 클로저 정의 String을 받아서 String으로 반환한다 let myRealName : (Stirng) -> String = { (name: String) -> String in let myRealName = { (name: String) -> String in return "개발하는 \(name)" } print(myRealName("만쥬")) // 개발하는 만쥬 print 로직을 담고 있는 클로저 let myNameLogic = { prin..

Swift - 제네릭

제네릭은 배열열에 어떠한 형태든 받을수 있음 struct myArray{ // 제네릭을 담은 빈 배열 // 멤버변수 var elements : [T] = [T]() // 생성자 메소드 // _ 앞에 언더바를 넣음으로 매개변수 이름 생략 init(_ elements: [T]) { self.elements = elements } } Struct 생성 struct Friend { var name: String } 숫자 var mySomeArray = myArray([1,2,3]) print("mySomeArray : \(mySomeArray)") // mySomeArray : myArray(elements: [1, 2, 3]) 문자열 var myStringArray = myArray(["가","나","다"])..

Swift - 함수 매개변수 이름

함수정의시 매개변수 이름 설정 설정방법 1 // 함수, 메소드 정의 func myFunction(name: String) -> String { return "안녕하세요?! \(name) 입니다!" } // 함수, 메소드를 호출한다. call myFunction(name: "만쥬") // "안녕하세요?! 만쥬 입니다!" 설정방법 2 // 함수, 메소드 정의 func myFunctionSecond(with name: String) -> String { return "안녕하세요?! \(name) 입니다!" } myFunctionSecond(with: "둘리") // "안녕하세요?! 둘리 입니다!" 설정방법 3 // 함수, 메소드 정의 func myFunctionThird(_ name: String) -> St..

Swift - 프로퍼티 옵저버

var myAge = 0 { willSet { print("값이 설정될 예정이다. myAge: \(myAge)") } didSet { print("값이 설정되었다. myAge: \(myAge)") } } myAge = 10 //값이 설정될 예정이다. myAge: 0 //값이 설정되었다. myAge: 10 myAge = 20 //값이 설정될 예정이다. myAge: 10 //값이 설정되었다. myAge: 20

Swift - Struct vs Class

스트럭터와 클래스 비교 Struct - 구조체 // 유튜버 (데이터) 모델 struct YoutuberStruct { var name : String var subscriberCount : Int } 값 넣기 전 var devJung = YoutuberStruct(name: "정대리", subscriberCount: 999) var devJungClone = devJung print("값 넣기 전 : devJungClone.name : \(devJungClone.name)") //값 넣기 전 : devJungClone.name : 정대리 값 넣은 후 값을 새로 넣어도 원래의 값은 변하지 않음 devJungClone.name = "만쥬" print("값 넣은 후 : devJungClone.name : \(..

Swift - For 반복문

// 6 times : 0 -> 5 for i in 0...5 { print("i : \(i)") // 0,1,2,3,4,5 } // 5 times : 0 -> 4 for i in 0.. 4 까지 짝수만 for i in 0..

Swift - enum 케이스 나누기

enum 케이스 나누기 학교를 선언 enum School { case elementary case middle case high } 아래처럼 선언해도 된다. enum School { case elementary, middle, high } let yourSchool = School.elementary print("yourSchool : \(yourSchool)") // yourSchool : elementary 학년 선언 enum Grade : Int { case first = 1 case second = 2 } 값 let yourGrade = Grade.second // second 값을가지고 있는 값 rawValue let yourGrade = Grade.second.rawValue // 2 학교 상..

Swift - foreach 반복문

var arr : [Int] = [0, 1, 2, 3, 4, 5] for item in arr { print("item : \(item)") // 0,1,2,3,4,5 } for item in arr where item > 3 { print("5보다 큰수 : \(item)") // 4,5 } for item in arr where item % 2 == 0 { print("짝수 : \(item)") // 0,2,4 }

Swift - 조건문

조건문 변수선언 // 다크모드 여부 var isDarkMode : Bool = false if (isDarkMode == true) { print("다크모드 입니다.") } if (isDarkMode != true) { print("다크모드 아닙니다.") } if isDarkMode == true { print("다크모드 입니다.") } if isDarkMode { print("다크모드 입니다.") } if !isDarkMode { print("다크모드 아닙니다.") } if isDarkMode { print("true") } else { print("false") } var title : String = isDarkMode ? "true" : "false"