목록전체 글 (64)
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 공식문서에서 따르면 구조체와 클래스는 많은 공통점을 가지고 있다고 말합니다. 값을 저장할 프로퍼티를 정의한다. 메서드를 정의한다. 서브스크립트 구문을 통해 값에 접근할 수 있도록 서브스크립트를 정의한다. 초기화 상태를 설정할 이니셜라이저(초기자)를 정의한다. 프로토콜을 준수하여 특정 종류의 표준 기능을 제공 (프로토콜 채택 가능) 차이점은 아래와 같다. 클래스는 상..
What’s new in XCODE15 공식영상에서는 Editing, Navigating, Sharing, Testing, Debugging, Distributing으로 크게 6가지 목차로 나눠서 설명함 세부 항목은 제가 임의로 나눈거라 참고해서 봐주시면 감사하겠습니다 Editing Introduction 이제 Xcode를 받으면 크기가 작아져서 모든 시뮬레이터를 받기전에도 코드를 쉽게 작성할 수 있음 그리고 베타버전을 웹사이트에서 받을 때도 포함할 시뮬레이터를 미리 선택할 수 있음 코드 완성 기능(Code completion)이 더 스마트해짐 예를들어, 아래와 같이 파일을 만들면 자동으로 파일 이름을 따라서 추천해줌 완성 표시 방식도 개선됨 (파라미터가 있는 함수를 호출할 때, 오른쪽 방향키로 가능한 ..