본문 바로가기

모바일앱199

프로퍼티 vs 메소드 두개념이 언뜻 보면 비슷해보여 헷갈릴 수가 있어 개념을 다시 비교해보자 1. computed property 이미 저장된 것을 가지고 재가공할때 쓰임 2. 함수로 만드는 것 결론은 사실 같다 어떤 것이 더 좋을까? person.fullName person.fullName() 개념 Property: 호출시 (저장된) 값을 하나 반환한다. Method: 호출시 어떤 작업을 한다. 만약 Method가 그냥 값을 리턴하는 작업만 한다면? 2021. 10. 14.
프로퍼티 개념 #StoredProperty #ComputedProperty #instanceProperty #TypeProperty #willSet #didSet #lazyProperty 앞서서 우리는 Structure를 배웠는데 관계된 것들을 묶는 것을 말한다. 그리고 오브젝트도 관계된 것들을 묶어준 것이라고 언급한 적이 있다. Object = Data + Method 스트럭쳐를 구현하면서 데이터와 메서드를 만들었다. 우리가 예전에 풀었던 내용을 보면 이런 구조로 되어있다. struct Store { //-------> 데이터 파트 let loc: Location let name: String let deliveryRange = 2.0 //-------> 메소드 파트 //배달가능한지보는 함수 func isDelive.. 2021. 10. 13.
프로토콜 Protocol Int Double 등등도 하나의 스트럭트이다. 아래의 빨간부분은 프로토콜이다. 어려운 번역으로는 규약이다. -> 지켜야할 약속이라고 생각해보자. (코딩할 때 꼭 구현되어야하는 메소드나 프로퍼티의 목록) 어떤 서비스를 이용할 때 해야할 일들 뮤직 서비스에서는 아이디 생성, 결제 등등 해야할 일들이 있다. 고급프로그래밍을 하려면 꼭 해야할 작업이다. 아래의 프로토콜도 한번 보자. 이 프로토콜은 커스텀스트링컨버터블을 하려면 아래 저 디스크립션이라는 것을 해줘야한다는 뜻 지난번 도전과제에서 했던 스트럭트를 보자 CustomStringConvertible 은 description을 완성해야한다. 만약 프로토콜을 충족시키지 않으면 경고메세지가 생성된다. 원래 데이터를 우리가 볼수있도록 출력하면. .. 2021. 10. 13.
Struct만들기 도전과제 도전과제 1. 강의 이름, 강사 이름, 학생수를 가지는 Struct 만들기 (Lecture) 2. 강의 어레이와 강사이름을 받아서 , 해당 강사의 강의 이름을 출력하는 함수 만들기 3. 강의 3개 만들고 강사이름으로 강의 찾기 더보기 import SwiftUI // 도전과제 // 1. 강의 이름, 강사 이름, 학생수를 가지는 Struct 만들기 (Lecture) // 2. 강의 어레이와 강사이름을 받아서 , 해당 강사의 강의 이름을 출력하는 함수 만들기 // 3. 강의 3개 만들고 강사이름으로 강의 찾기 struct Lecture { let name: String let instructor: String let numOfStudent: Int } func printLectureName(from instr.. 2021. 10. 12.
구조체와 클래스의 차이점 구조체와 클래스 지금까지 기본적인 Basic Type과 그것들을 어떻게 저장하는지 배웠다. 이 값들을 많이 저장 할 때, 서로 관계하는 값들을 한꺼번에 관리하거나 표현하고 싶을 때 어떻게 할까? iOS강의 정보라면 강사정보, 강의 이름, 학생 수 등등 낱개 관리가 아니라 덩어리로 관리한다. 관계가 있는 여러 데이터를 묶어서 표현 Object = Data + Method Structure VS Class Structure Class Value Types Reference Types Copy Share 컴퓨터 안에 할당 되는 공간 Stack 컴퓨터 안에 할당 되는 공간 Heap import SwiftUI class PersonClass { var name: String var age: Int init(nam.. 2021. 10. 11.
Collection - Closure, Capturing Values Collection - Closure { ( parameters ) -> returntype in statements } 클로저 란? 이름이 없는 Method 혹은 함수 이다 공식 문서링크 https://docs.swift.org/swift-book/LanguageGuide/Closures.html Global and nested functions, as introduced in Functions, are actually special cases of closures. Closures take one of three forms: Global functions are closures that have a name and don’t capture any values. Nested functions are c.. 2021. 10. 10.
Collection - Set Collection - Set 기본 개념 - 순서가 없다!! - 중복이 없는 유니크한 아이템을 관리할때 사용한다. import UIKit var someArray: Array = [1, 2, 3,1] //[1, 2, 3, 1] var someSet: Set = [1,2,3,1,2] //{3, 1, 2} // collection의 공통 property someSet.isEmpty someSet.count someSet.contains(1) //true someSet.insert(5) someSet //{3, 1, 2, 5} someSet.remove(1) someSet //{2, 5, 3} 2021. 10. 10.
Collection - Dictionary 순서단위인 Array와 달리 의미단위로 찾을때 유용하다. Array는 순서기반으로 찾고 Dictionary는 의미기반으로 찾음 ex) 학생들의 점수관리 import UIKit // //var scoreDic: [String:Int] = ["Jason": 80, "Jay": 95, "Jake":90] ////dictionary는 두가지 타입을 정의한다. [key: Value] // ////var scoreDic: Dictionary = ["Jason": 80, "Jay": 95, "Jake":90] //scoreDic["Jason"] //scoreDic["Jay"] //scoreDic["Jerry"] //nil // ////있을수도 없을 수도 있기 때문에 안정적으로 가져올려면 옵셔널 바인딩으로 //if l.. 2021. 10. 10.
Collection - Array 정말 많은 변수들이 등장한다. 그 많은 변수들을 관리할 때에는 통(collection)에 넣어서 관리를한다. 형식은 1. 앞에서 부터 부장님 차장님 팀장님 그다음 내꺼 2. 각각 부장님 차장님 팀장님 내꺼 스티커 붙이기 등등 여러 통의 종류가 있다. Array Dictionary Set + Closure 우리는 어떻게 엮였을 때 효과적인지를 집중하며 알아보자 Array와 Dictionary는 정말 필수개념이다. Array Element Element Element Element 이 통에 담을 때에는 전부 같은 타입이어야 한다. O 같은 타입 Type 1 Type 1 Type 1 Type 1 X 다른 타입 Type 1 Type 1 Type 2 Type 2 INDEX 각각의 Element에 번호가 붙어있다... 2021. 10. 9.
옵셔널 도전과제 ---- 도전과제 1. 최애 음식이름을 담는 변수를 작성하시고 (String?) 2. 옵셔널 바인딩을 이용해서 값을 확인해보기 1. if let 2. guard 3.forced unwrapping 3. 닉네임을 받아서 출력하는 함수 만들기, 조건 입력 파라미터는 String? 더보기 import SwiftUI //---- 도전과제 //1. 최애 음식이름을 담는 변수를 작성하시고 (String?) //2. 옵셔널 바인딩을 이용해서 값을 확인해보기 1. if let 2. guard 3.forced unwrapping //3. 닉네임을 받아서 출력하는 함수 만들기, 조건 입력 파라미터는 String? var favoriteFood: String? = "김치찌개" print(favoriteFood) // Opt.. 2021. 10. 8.