목록Swift (56)
GGURUPiOS
안녕하세요. 이번시간에는 AnyObject, Any, AnyClass 에 대해 알아보도록 하겠습니다. 저것들을 이용해서 직접적으로 짜본적은 없지만 Swift 내장 메서드들을 사용할 때 가끔 저런녀석들이 보이는데요. 저 아이들을 파헤쳐 보겠습니다. AnyObject? 공식문서에 따르면, AnyObject는 모든 클래스들이 암묵적으로 준수하는 프로토콜 이라고 되어있습니다. 모든 클래스 인스턴스, 클래스 타입 또는 class-only 프로토콜에 대한 타입으로 사용될 수 있다고 합니다. 예제를 살펴봅시다. class FloatRef { let value: Float init(_ value: Float) { self.value = value } } let x = FloatRef(2.3) let y: AnyObje..
안녕하세요. 이번시간은 Designated initializers 와 Convenience Initializers 에 대해 알아보겠습니다! Designated Initializers & Convenience Initializers? 두 이니셜라이저는 모두 클래스의 초기화에 사용되는 이니셜라이저이다. Designated Initializers? Designated Initializers는 클래스의 기본 이니셜라이저 입니다. 모든 프로퍼티를 완전히 초기화함 적절한 슈퍼클래스 이니셜라이저를 호출하여 초기화 프로세스를 진행 클래스에는 거의 없는 경우가 많거나, 하나만 있는 경우도 매우 흔함 (아마도 자동상속 규칙1 때문에 이니셜라이저가 자동상속 되는 경우가 많기 때문인 듯 함 규칙 1 서브클래스에 Designa..
안녕하세요. 이번 시간에는 Copy-on-Write 가 무엇인지 알아보도록 하겠습니다. Copy-on-Write(CoW)란 무엇일까? 컴퓨터 프로그래밍에서 수정 가능한 리소스에 대한 '복제' 또는 '복사' 작업을 효율적으로 구현하는 데 사용되는 리소스 관리 기법입니다. 이렇게 말하면 와닿지 않는데, 간단히 이야기하면 값이 변경 되기 전까지는 copy를 하지 않고 원본을 바라보는 것 입니다. 아래의 예시를 볼게요. Array값을 할당한 numberArrays의 값을 다시 copyArrays에 할당하게 되면 CoW가 사용된걸 보실 수 있습니다. 처음에는 같은 메모리주소를 바라보다가, numberArrays의 값이 변경되면, 다른 메모리 주소를 가집니다. (copyArrays의 값을 수정해도 마찬가지, 먼저 ..
안녕하세요. 이번에는 Class 성능을 향상 시키는 방법에 대해 알아보려고 합니다. 조금 오래되긴 했지만, 애플 스위프트 팀에서 올린 블로그 글 (현재는 운영을 안하는듯 하다. 마지막 글이 2016. 10. 12)을 참고하여 작성했습니다. Increasing Performance by Reducing Dynamic Dispatch - Swift Blog Get the latest news and helpful tips on the Swift programming language from the engineers who created it. developer.apple.com 위 글에서는 Dynamic Dispatch를 줄여서, 성능을 향상시키는 방법에 대해 세가지 정도로 기술하고 있습니다. Dynamic..
안녕하세요. 오늘은 구조체와 클래스, 열거형의 공통점과 차이점에 대해 알아보겠습니다. 일단 공식문서를 보겠습니다. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/classesandstructures Documentation docs.swift.org 공식문서에서 따르면 구조체와 클래스는 많은 공통점을 가지고 있다고 말합니다. 값을 저장할 프로퍼티를 정의한다. 메서드를 정의한다. 서브스크립트 구문을 통해 값에 접근할 수 있도록 서브스크립트를 정의한다. 초기화 상태를 설정할 이니셜라이저(초기자)를 정의한다. 프로토콜을 준수하여 특정 종류의 표준 기능을 제공 (프로토콜 채택 가능) 차이점은 아래와 같다. 클래스는 상..
고차함수 스위프트는 함수를 일급 객체로 취급하기 때문에 함수를 다른 함수의 전달 인자로 사용할 수 있음 고차함수란? 파라미터로 함수를 갖는 함수를 고차함수라고 함 Map, Filter, Reduce 에 대해 알아보자 Map ( 맵 ) 맵은 자신을 호출할 때 파라미터로 전달된 함수를 실행하여 그 결과를 다시 반환 하는 함수임 컬렉션 프로토콜을 따르는 타입에서 사용 가능 ( 배열 , 딕셔너리 , 세트 등 ) 파라미터를 통해 받은 함수에 적용한 후 다시 반환 함 → 기존 데이터를 변형 하는데 많이 사용함 map 메서드의 사용법은 For-in 구문과 비슷함 코드의 재사용 측면이나 컴파일러 최적화 측면에서 본다면 성능 ㅊ ㅏ이가 있음 다중 스레드 환경에서 대상 컨테이너의 값이 스레드에서 변경되는 시점에 다른 스레..