본문 바로가기

IT

(126)
[swift] Wildcard, Nested Types [swift 기초문법] - 와일드카드(Wildcard), 타입 중첩(Nested Types) 와일드카드란 언더바 '_' 로 표현을 합니다. 와일드카드를 사용하는 곳의 값은 무시된다는 뜻입니다. swift문, for-in문, closure 등 곳곳에서 사용됩니다. swift 구문에서 와이들카드 사용예 let value = 0 swift value { case _: print(value) //이렇게 쓰이게되면 value가 어떤 값이라도 해당 case문이 항상 실행됩니다. } let tupleValue = ("sample", 999, "A") swift tupleValue { case ("sample", _, _): print("sample tuple") //튜플의 맨 처음 값이 sample이면 실행됩니다. ..
iOS13 Modal ViewController 변경사항 IOS13 에서 바뀐 Modal ViewController 변경사항 https://stackoverflow.com/questions/56435510/presenting-modal-in-ios-13-fullscreen > 기본적으로 pageSheet(card style) 으로 올라오는데 문제는 뒤로가기나, 타이틀 부분을 아래 swipe시에 modal present Viewcontroller에 viewAppear 이벤트가 호출되지 않습니다. # 대응방안 1. View modal Style을 변경 > Page sheet에서 Full screen으로 변경 vc.modalPresentationStyle = .fullScreen 2. 이벤트 연동 > 타이틀 부분에서 아래 swpie 동작 delegate 연동 htt..
iOS13(xcode11) NSData 변경사항 xcod11로 빌드시 NSData문제 IOS13 적용하다보니 회원정보 encoding 과정에서 NSData 의 description 메소드로 값을 가져오는데 암호화가 안되서 확인해보니 description에서 가져오는 데이터가 틀립니다. 알고보니 아래처럼 xcode11로 빌드를 하면 NSData포맷이 달라져서 앞부분에 length와 bytes정보가 붙습니다. iOS 13 changes the format of descriptions for Foundation objects, including NSData: iOS 12 (deviceToken as NSData).description // "" iOS 13 (deviceToken as NSData).description // "{length = 32, by..
[swift] POP (Protocol Oriented Language) [swift 기초문법] - 프로토콜 지향 프로그래밍(Protocol Oriented Language, POP) 스위프트(swift)니 코틀린(Kotlin)이니 요즘 프로토콜 지향 프로그램이란 말이 참 여기저기서 많이 들리고 있습니다. 그럼 프로토콜 지향 프로그래밍이란(POP란) 뭘까요? 저는 프로토콜 지향 프로그래밍 안에 객체 지향 프로그래밍이 있고 객체 지향 프로그래밍 안에 절차 지향 프로그래밍이 있다고 생각합니다. 이 말을 풀어보겠습니다. 절차 지향이란(Procedural programming) 대표적으로 C언어가 있지요 프로시저의 호출을 바탕으로 하며 실행되어야 하는 기능들이 함수의 흐름이 주가 되어 상호작용을 합니다. 그러다 보니 모듈화가 어렵기 때문에 유지 보수가 힘든 반면 객체지향은 유지 보수..
[swift] Protocol Default Implementations, Associated Type [swift 기초문법] - 프로토콜 초기구현(Protocol Default Implementations), 연관타입(Associated Type) 프로토콜 초기구현이란(Protocol Default Implementations) 프로토콜의 익스텐션을 통해 구현하는 것을 프로토콜 추기구현이라고 합니다.(protocol + extension 의 결합) 프로토콜은 프로토콜을 채택하여 사용할 타입들에서 구현해줘야하는 요구사항들을 정의만 해줄 뿐 내용을 구현할 수는 없습니다. 그러나 익스텐션을 사용하면 프로토콜이 요구하는 기능을 실질적으로 정의할 수 있습니다. 다만 익스텐션에서 저장 프로퍼티는 구현이 불가능합니다. 하나의 프로토콜을 만들어 초기 구현을 해둔다면 여러 타입에서 해당 기능을 사용하고 싶을때, 프로토콜..
[swift] Extension, Generic [swift 기초문법] - 익스텐션(Extension) 익스텐션이란(Extension) 익스텐션은 Objective-C의 카테고리(Category)와 유사합니다. 카테고리는 이름을 명명해야했지만 스위프트의 익스텐션은 이름이 없습니다. 확장이란 뜻처럼 있는 클래스, 구조체, 열거형, 프로토콜 타입등에 새로운 기능을 추가하여 확장할 수 있는 기능입니다. 기존에 존재하는 기능을 재정의할 수는 없습니다. 익스텐션에 추가할 수 있는 항목은 연산 타입/연산 인스턴스 프로퍼티, 타입/인스턴스 메서드, 이니셜라이저, 서브스크립트, 중첩 타입, 특정 프로토콜을 준수할 수 있도록 기능 추가가 있습니다. 외부에서 가져온 프레임워크나 라이브러리에 내가 원하는 기능을 추가하고자 할 때 사용하면 유용합니다. extension이라..
[swift] Type Casting [swift 기초문법] - 타입캐스팅(Type casting) 스위프트는 굉장히 type strict한 언어 입니다. 다른 타입끼리의 값 교환을 엄격히 제한합니다. 또한 암시적 데이터 타입 변환(Implicit Type Conversion)은 지원하지 않습니다. var doubleValue: Double = 4.2 var castingValue: Int = Int(doubleValue) 스위프트에서는 위와같이 타입을 변경합니다. 이는 타입캐스팅이 아니라 이니셜라이저를 통해 새로운 Int구조체 인스턴스를 생성한 것입니다. 위 내용은 스위프트에서 타입캐스팅이라기 보다는 이니셜라이저의 사용입니다. 스위프트에서 타입캐스팅은 is(타입 확인 연산자)와 as 연산자로 구현됩니다. 타입 확인 연산자 is 해당 클래스..
[swift] Inheritance [swift 기초문법] - 상속(Inheritance) 용어 정리 상속 받은 클래스 : 자식 클래스 (Subclass, Child class) 물려준 클래스 : 부모 클래스 (Superclass, Parents class) 다른 클래스로부터 상속받지 않은 클래스 : 기반클래스(Base class) 상속(Inheritance) 기반클래스를 다른 클래스에서 물려받는 것을 말합니다. 자식 클래스는 부모 클래스의 메서드, 프로퍼티, 서브스크립트를 사용, 재정의 할 수 있으며 프로퍼티 감시자를 구현할 수 있습니다. class 자식 클래스 이름: 부모 클래스 이름 { //클래스 내용 구현 } 재정의(Override) 부모클래스의 메서드, 프로퍼티, 서브스크립트 등을 그대로 사용하지 않고 변경하여 사용하는 것을 오버..