목록Swift (56)
GGURUPiOS
Access Control ( 접근제어, 액세스 제어) 접근 제어는 다른 소스 파일 및 모듈의 코드에서 코드 부분에 대한 액세스를 제한함 이 기능을 사용하면 코드의 구현 세부 정보를 숨기고 해당 코드에 액세스 하고 사용할 수 있는 기본 인터페이스를 지정 가능함 접근 제어는 클래스, 구조체, 열겨형 등 개별타입에도 적용할 수 있고 그 타입에 속한 프로퍼티, 메소드, 초기자, 서브스크립트에도 적용할 수 있음 프로토콜은 그래서 전역 상수, 변수, 함수 같이 특정 문맥에 종속됨 스위프트에서는 기본 접근 레벨을 제공해 접근 레벨의 처리를 쉽게할 수 있도록 도움 사실 단일 타겟의 앱에서는 특별히 접근레벨을 전혀 명시하지 않아도 됨 모듈과 소스 파일 스위프트의 접근 제어는 모듈과 소스파일에 기반을 둠 모듈은 코드를 ..
Memory Safety ( 메모리 안정성 ) 기본적으로 스위프트는 코드가 비정상적으로 동작하는 것을 막는 행위를 함 예를들면, 변수가 초기화 되기전에 사용된다던가, 메모리에서 해제된 값을 접근 하는 것을 막는다던가, 인덱스의 한계를 넘는지 확인하는 것 등등 스위프트에서는 또, 메모리의 같은 영역을 동시에 접근해서 충돌이 나지 않도록 해줌 메모리 접근 충돌이 발생할 수 있는 잠재적인 상황을 이해하고 피하는 코드를 어떻게 작성할 수 있는 지 이해하자. 메모리 접근 충돌의 이해 코드에서 메모리 접근은 아래 예와 같이 변수에 값을 할당하거나 접근할 때 발생함 // A write access to the memory where one is stored. var one = 1 // A read access fro..
Automatic Reference Counting ( 자동 참조 카운팅 ) 스위프트에서는 앱의 메모리 사용을 관리 하기위해 ARC를 사용함 자동으로 참조 횟수를 관리하기 때문에 개발자는 메모리 관리에 신경 쓸 필요가 없음 하지만 몇몇의 경우 ARC에서 메모리 관리를 위해 코드의 특정 부분에 대한 관계에 대한 정보를 필요로 함 참조 횟수는 클래스 타입의 인스턴스에만 적용되고 값 타입인 구조체 열거형 등에는 적용 X ARC의 동작 클래스의 새 인스턴스를 만들 때마다 ARC는 인스턴스 정보를 담는데 필요한 적당한 크기의 메모리를 할당함 이 메모리는 그 인스턴스에 대한 정보와 관련된 저장 프로퍼티 값도 가지고 있음 추가적으로 인스턴스가 더이상 사용되지 않을때 ARC는 그 인스턴스가 차지하고 있는 메모리를 해지..
Opaque Types ( 불투명 타입? ) 불투명한 반환 타입이 있는 함수 메소드는 반환 값의 타입 정보를 숨김 함수의 반환 타입으로 구체적인 타입을 제공하는 대신 반환 값은 지원하는 프로토콜 측면에서 설명됨 반환 값의 기본형식이 비공개로 유지될 수 있기 때문에 형식 정보를 숨기는 것은 모듈과 모듈을 호출하는 코드 사이에 경계에서 유용함 타입이 프로토콜 유형인 값을 반환하는 것과 달리 불투명 타입은 타입 ID를 유지함 컴파일러는 타입정보에 액세스 할 수 있지만 모듈의 클라이언트는 액세스 불가 불투명 타입이 해결하는 문제 ASCII 아트 도형을 그리는 모듈을 작성한다고 가정, ASCII 아트 쉐잎의 기본 특성은 해당 쉐잎의 문자열 표현을 반환하는 draw() 함수이며, 이를 Shape 프로토콜의 요구사항..
Generics (제네릭) 제네릭 코드는 모든 유형에서 작동할 수 있는 유연하고 재사용 가능한 함수 및 타입을 작성할 수 있음 중복을 피하고 의도를 명확하고 추상화된 방식으로 표현하는 코드를 작성 가능 제네릭은 스위프트의 가장 강력한 기능 중 하나임 제네릭이 해결하는 문제 다음은 두 값을 교환하는 제네릭이 아닌 표준 함수임. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \\(someInt), and anotherInt ..
Protocols (프로토콜) 프로토콜은 특정 기능 수행에 필수적인 요소를 나타내는 청사진 임 프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform) 고 말함. 프로토콜에 필수 구현을 추가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장 하는 것이 가능함 프로토콜 문법 protocol SomeProtocol { // protocol definition goes here } 프로토콜을 따르는 타입을 정의하기 위해서는 타입 이름 뒤에 콜론(:) 을 붙이고 따를 프로토콜 이름을 적는다. 여러개라면 콤마로 구분해주자 만약 슈퍼클래스가 있는 경우 프로토콜 앞에 슈퍼클래스 이름을 먼저 나열하자 struct SomeStructure: FirstProtocol, AnotherProtocol { // struc..