본문 바로가기
반응형

Swift 문법13

swift weak, unowned, delegate weak weak 변수는 항상 옵셔널타입이어야함 -> 약한 참조만 남아 객체에서 메모리가 해제될 때 자동으로 nil이들어감 unowned로 선언된 변수는 nil이 될 수 없음 -> 해제된 메모리 영역에 접근하지 않는다는 확실한 경우에만 사용 delegate 선언 시 weak로 설정해야 메모리 누수를 피할 수 있음 참조: https://baked-corn.tistory.com/30?category=718234 2021. 7. 5.
Swift escaping closure 탈출 클로저 간략하게 정리 var closureArray: [(Int) -> ()] = [] func asyncEscapingClosure( param1: Int, completion: @escaping (Int) -> () ) { closureArray.append(completion) DispatchQueue.main.async { completion(param1) } print("asyncEscapingClosure 실행") print("asyncEscapingClosure 중간부") } asyncEscapingClosure(param1: 7) { element in print("넘겨받은 element: \(element)") print("completion 클로저가 실행되었습니다.") } closureArray.first?.. 2021. 7. 2.
Swift 튜플 튜플은 인덱스와 이름으로 접근 가능하다. 튜플 간 비교는 튜플 내 원소 순서대로 비교된다. (*첫 번째 원소끼리 비교 후 같다면 두 번째 원소끼리 비교) (1, "1") == (1,"1") // true (1, "one") (1, "B") // false 2021. 3. 11.
Swift 에러처리 try do catch 예외가 발생할 수 있는 함수는 반환타입 앞에 throws를 붙여주어야합니다. errorFunc함수는 throws가 붙은 함수이기 때문에 사용 시 try를 붙여주어야합니다. 그냥 사용 시 try사용하라는 경고가 뜹니다. 하지만 try 붙여서 사용 시 컴파일 에러만 나지 않을 뿐, 실제로 에러가 발생하면 앱이 크래쉬납니다. 따라서 발생하는 크래쉬를 방지하기 위해서는 do-catch 블록과 함께 이용하여야합니다. 반환값이 있는 throws함수 사용 시 try? errorFunc() // 에러 발생 시 nill 반환 try! errorFunc() // 에러 발생 시 크래쉬 위 방법대로 호출하면 do catatch문 없이 사용가능합니다. 2021. 2. 14.
Swift protocol extension 프로토콜 익스텐션 protocol Movable { } protocol Portable { func port() } extension Movable { func move() { print("move 실행") } } struct Human: Movable,Portable { func port() { print("port 실행") } } var man = Human() man.move() man.port() Movable 프로토콜에 extension을 하였습니다. 프로토콜에 extension을 이용하면 구현부분을 작성할 수 있습니다. struct Human: Movable,Portable { func port() { print("port 실행") } func move() { print("move 재정의") } } 프로토콜 e.. 2021. 2. 8.
반응형