본문 바로가기

교육

(93)
[swift] property 1. Stored Property 저장 속성, 일반 멤버 data, 지연된 저장 속성 - var 변수만 가능, let은 초기화를 해줘야함 2. calculation property 계산 속성, getter/setter, 메모리에 변수를 만드는 것이 아니라 함수를 만드는 개념, 단, 사용자 입장에서는 변수처럼 보임 3. Type property 형식 속성, 정적 멤버 데이터 4. Property ObserverKVO문법과 유사함 5. 샘플코드 class Point{ var x : Int = 0 var y : Int = 0 init() {print("point init")}}// 저장 속성(Stored Property) : 일반 멤버 data, 지연된 저장 속성 - var 변수만 가능, let은 초기화를 해..
[swift] init 1. init모든 멤버가 반드시 초기화 되어야 함변수 선언 옆에 하던지, 초기화 함수를 만들던지 꼭 해야 에러가 안남 2. 샘플 코드class Point{ // var x : Int = 0 var x : Int var y : Int // init() // 생성자 // { // x=0 // y=0 // } init(_ x : Int,_ y : Int) // 생성자 { self.x=x self.y=y } // 편의 생성자 : 하나의 생성자에서 다른 생성자를 호출하고 싶을 때 사용 convenience init(){self.init(0,0)} // 실패 가능 생성자(failable constructor init?(s:String) { x=0 y=0 return nil }}var pt = Point()//var..
[swift] 구조체와 클래스 1. 구조체값타입 2. 클래스참조타입, 상속가능, 소멸자 가능, reflection등으로 동적 타입 검사 가능 3. 샘플 코드// 구조체는 무조건 stack, 값 대입struct SPoint{ var x : Int = 0 var y : Int = 0} // class는 무조건 heap, 객체가 heap에 있고 cp1이 가리킴class CPoint{ var x : Int = 0 var y : Int = 0}var sp1 = SPoint()var sp2 = sp1 // 값 복사 sp1.x = 10 // sp1만 바뀜 print(sp1.x, sp2.x) var cp1 = CPoint()var cp2 = cp1 // 참조 복사 cp1.x = 10 // cp2도 같이 바뀜 print(cp1.x, cp2.x) va..
[swift] enum 1. enumerator연속하는 자료를 가지는 상수 집합 2. 샘플코드// enum// 기본모양//enum {Mon,Tue} // c스타일 // 이름 꼭 써야하고 각 항목 case//enum Days {// case Mon// case Tue//} // case쓰기 귀찮으면 ,로 이어가자enum Days { case Mon,Tue, Wed, Thu, Fri, Sat, Sun} // 정수형 상수가 아닌, 하나의 독립된 타입으로 인식var day = Days.Mon showType(day) //day = 1 // 에러day = Days.Mon //enum값 중 하나를 꼭 넣어야함day = .Mon // 이렇게 넣어도 된다. // 값을 가지는 enumenum Shape : Int { case Rect = 0,..
[swift] 클로저 1. 클로저익명의 함수함수 이름없이 함수 구현objc의 block 2. 샘플 코드// Closure, Lambda, Block, Annonymous Function// 모두 비슷한 개념 // Closure : 익명의 함수 개념func Sort(inout ar : Array , compare : (Int, Int)->Bool){ for i in 0...ar.count-2 { for j in i+1...ar.count-1 { // if ar[i] > ar[j] if compare(ar[i], ar[j]) // 사용자가 인자로 결정 { let temp = ar[i] ar[i] = ar[j] ar[j] = temp } } }}// Sort에 전달할 비교함수 둘func cmp1(a:Int, _ b:Int) -> ..
[swift] 함수 고급 1. 함수 타입 func Add( a : Int, _ b : Int )->Int 와 같은 함수의 타입은(Int, Int) -> Int 이다.이 함수타입을 인자로 가질수도 있다. 2. 함수 내부에 함수 선언함수내부에 함수 선언이 가능하며 외부 함수의 변수를 사용 가능하다. 3. 샘플코드// 함수 고급func Add( a : Int, _ b : Int )->Int{ print("Add") return a+b}showType(Add) // (Int,Int) -> Int var fp1 :(Int,Int)->Int = Add // c의 함수 포인터 개념fp1(1,2) // Add(1,2) var fp2 = Addfp2(2,3) // 함수 타입을 인자로 가지는 함수//func foo( f : (Int, Int)->..
[swift] 제어문 1. 제어문case에 따른 분기처리를 위해 사용 2. 샘플 코드// 제어문 //if 다른언어와 거의 동일 var n = 10 if n == 10{ }else if n == 20{ } // switch => 많은 변화// double과 문자열 가능// break 필요없다. fallthrough 개념 추가// default 반드시 만들어야한다.var s = "Kim" switch s{case "Kim": print("ㅏ"); fallthrough // 밑에거도 실행해달라default: print("a")} // tuple 매칭var t1 = (1, 32)switch t1{case (1,32) : print("1")case (1,_) : print("2")case (1,let y) : print("3")cas..
[swift] 반복문 1. 반복문loop를 돌려 원하는 코드를 구현하는 방법 2. 샘플 코드 // 반복문 // forvar i = 0 for(i = 0; i 0{ print(idx) idx -= 1} idx = 10 repeat{ print(idx) idx -= 1}while idx>0 // break, continue, return // labeled ..