2014-09-18 5 views
-3

일부 iOS 개발에서 C에서 몇 가지 작업을 수행해야한다는 것을 알았습니다. 예를 들어 주소록 API는 Objective-C의 당시에는 제공되지 않았습니다.Swift 프레임 워크는 무엇입니까?

이제 Swift가 출시되었으므로 어떤 프레임 워크가 이식되었습니다. 목록을 찾을 수없는 것 같습니다. 스위프트에서 Objective-C 방법을 호출 할 수 있다는 것을 알고 있지만 스위프트에서 C를 호출 할 수 있다고는 생각하지 않습니다. Apple은 C 전용 프레임 워크를 Swift 또는 적어도 Objective-C로 이식 할 계획입니까? 특히 프로젝트를 유지하는 사람들을 찾기가 어렵 기 때문에 프로젝트에 세 가지 언어가 분산되어 있다고 생각하지 않습니다.

편집 : C

+2

Apple에는 C++ 프레임 워크가 있습니까? –

+2

ABAddressBook은 일반 C 인터페이스 (CoreFoundation 기반)를 사용하며 Swift에서 사용할 수 있습니다. 모든 iOS 프레임 워크의 출발점은 https://developer.apple.com/library/ios/navigation/#section=Frameworks입니다. Swift에서 사용할 수없는 * 어떤 프레임 워크를 사용합니까? –

+0

Swift에서는 전체 Foundation 프레임 워크를 사용할 수 있습니다. 타사 프레임 워크는 브리지 헤더를 통해 가져올 수 있습니다. – Atomix

답변

1

iOS Developer Library 로 변경 C++는 모든 아이폰 OS 프레임 워크의 문서, 예를 들어위한 좋은 출발점이 될 것입니다 ABAddressBook Reference.

애플은 (Objective-) C 및 사용할 수있는 스위프트 인터페이스를 모두 보여 프레임 워크 문서를 업데이트했습니다 : 그 전제는 거짓이기 때문에

enter image description here

2

문제는 가짜입니다. Swift의 주소록 프레임 워크 사용에는 문제가 없습니다. 그것은 메모리 관리 문제 때문에 엉덩이에 통증이 있지만 완벽하게 수행 할 수 있습니다. 예를 들어, https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch18p713addressBook/ch31p973addressBook/ViewController.swift

스위프트에서 모든 코드를 다시 작성했으며, 전체적으로는 속성 지정과 같은 매우 작은 두 가지 동작을 제외하고는 기본적으로 수행 할 수있는 것이 아무것도 없었습니다. 목표에 @dynamic -C sense를 사용하거나 Objective-C를 사용해야하는 C 함수에 대한 포인터를 정의하고 전달합니다.

C 설명서를 "포팅"해야하는 프레임 워크와 혼동해서는 안됩니다. 그것은 "포팅"할 필요가 없습니다. 아무것도 "포팅"할 필요가 없습니다. Swift의 핵심은 API와 상호 작용한다는 것입니다.

1

예를 들어 Objective-C에서 주소록 API를 사용할 수 없습니다.

Objective-C는 C의 상위 집합이므로 C에서 사용할 수있는 API는 Objective-C에서 사용할 수 있습니다.

클래스 기반 API가 없다는 것을 의미합니다.

이제 Swift가 출시되었으므로 어떤 프레임 워크가 이식되었습니다.

모든 코코아 프레임 워크는 Swift에서 직접 가져올 수 있습니다. 또한 사용자 정의 C 또는 Objective-C API를 브리징 헤더에 넣으면 Swift에서 사용할 수 있습니다. 그렇다고해서 이러한 API가 "신속하게 포팅 된"것은 아닙니다. Swift는 C 및 Objective-C API를 가져올 수 있습니다.

+0

이것은 좋은 설명입니다. 그것을 지워 줘서 고마워. – Julian