본문 바로가기

앱/iOS(Swift)62

[Swift] Initialization free init: 클래스가 인자없는 init을 자동생성, 별로 추천하지 않음 struct A { var x: Int var y: String } let foo = A.init(x:5, y:"hello") init 안에는 반드시 해주어야 하는 요구사항이 있는데 어떤 init가 끝나는 시점에는 모든 프로퍼티는 반드시 값을 가져아한다 클래스는 init 메소드로 두가지 타입이 있는데 convenience initializers(편의 초기화함수), designated initializers(지정 초기화함수)가 있다 지정 초기화는 부모클래스에 있는 지정 초기화를 호출해야만한다. 지정 초기화는 부모클래스에있는 편의 초기화를 호출할 수 없고, 클래스에서 부모의 편의 초기화함수를 호출할 수 없다. 클래스에서 내가 만든.. 2022. 1. 28.
[Swift] Tuples, Range Tuple: 서로다른 타입들을 그룹으로 묶어서 하나의 타입으로 만드는것 타입이 들어갈 자리라면 튜플은 어디에서든지 사용가능 let x:(String, Int, Double) = ("hello", 5, 0.85) let (word, number, value) = x print(word) print(number) print(value) ---------------------- let x :(w:String, i:Int, v:Double) = ("hello", 5, 0.85) print(x.w) print(x.i) print(x.v) ------------ return(250, 10) Range: 범위, 시작포인트와 끝포인트 elt arr = ["a","b","c","d"] let subarr1 = arr[2.. 2022. 1. 27.
[iOS] MVC 패턴 Model: 내가 만든 어플리케이션이 무엇인가(ex: 계산기에서 실질적으로계산을 하는부분 곱셈같은것) Controller: 모델이 스크린에 어떻게 그려지는지 표현 View: 컨트롤러의 하위 종속자 Model과 View는 절대 소통 불가 View의 각각의 객체들이 컨트롤러에게 어떠한 책임을 위임(delegate) delegate: 뷰안에있는 프로퍼티 dataSource: 뷰는 자신이 보여주고있는 데이터를 소유할 수 없다. 그래서 컨트롤러에게 매번 물어본다. 그럼 컨트롤러는 Model에서 데이터를 가져온다 이것도 위임(delegate) 과정으로 이뤄지는데 여기 쓰이는 delegate를 dataSource라고 부른다 모델에 채널을 고정하고 있는것은 컨트롤러이고 컨트롤러는 데이터를 화면에 보여주기 위해 일반화 .. 2022. 1. 26.
[iOS] 앱 생명주기 13버전 이후 app delegate 역할이 app deletegate, scene delegate로 나누어졌다 -> 아이패드 OS의 새로운 멀티윈도우 지원기능을 사용하기 위해서 ex) 크롬을 왼쪽에 띄워두고 다른어플을 오른쪽에 띄울 수 있게 된것] AppDelegate: 라이프 사이클 이벤트에 대해 처리 AppDelegate.swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. retu.. 2022. 1. 23.
[Swift] Type Casting Type Casting Type Casting: 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 슈퍼클래스나 서브 클래스로 취급하는 방법 is: 타입을 체크하는 연산자, Type와 동일하거나 서브클래스인경우 같다고 여긴다 as: 업캐스팅, 다운캐스팅 as?: 옵셔널값 as!: 강제추출 class Human{ let name:String init(name: String){ self.name = name } } class Man:Human{} class Woman:Human{} let lee: Man = .init() lee is Man //true lee is Human //true let people:[Human] =[ Man.init(name:"lee") Woman.init(name:"kim".. 2022. 1. 23.
[Swift] for in, forEach 차이 for in for i in 1...3 { print(i) } #################### var nums = [1,2,3] for i in nums { print(i) } 3...1 은 되지 않는다(역순) upperBound < lowerBound x 역순으로 하는법 for i in (1...3).reversed() for i in stride(from:3, to:0, by:-1) //to 숫자전(1)까지 나옴 to 대신 through:1 하면 1까지 나옴 for Each var nums = [1,2,3] nums.forEach { (i) in print(i) } for in, forEach 차이점 for in은 break,continue 사용가능하지만 forEach는 사용불가 for in은 .. 2022. 1. 23.