질문 : @import 대 #import-iOS 7
나는 WWDC 비디오 "Implementing Engaging UI on iOS"에서 논의 된 바와 같이 새로운 iOS 7 기능 중 일부를 가지고 놀면서 일부 이미지 효과로 작업하고 있습니다. 세션의 소스 코드 내에서 흐림 효과를 생성하기 위해 UIImage
는 다음과 같이 UIKit을 가져 오는 범주를 통해 확장되었습니다.
@import UIKit;
다른 세션 비디오에서 이것에 대해 본 것 같지만 찾는 데 어려움이 있습니다. 이것을 언제 사용할 지에 대한 배경 정보를 찾고 있습니다. Apple 프레임 워크에서만 사용할 수 있습니까? 이 컴파일러 지시문을 사용하면 이전 코드로 돌아가서 업데이트해야하는 이점이 있습니까?
답변
모듈 또는 "의미 적 가져 오기"라는 새로운 기능입니다. 세션 205 및 404 에 대한 WWDC 2013 비디오에 더 많은 정보가 있습니다. 미리 컴파일 된 헤더의 더 나은 구현입니다. iOS 7 및 Mavericks의 모든 시스템 프레임 워크에서 모듈을 사용할 수 있습니다. 모듈은 프레임 워크 실행 파일과 헤더를 함께 패키징하며 #import
보다 안전하고 효율적인 것으로 선전됩니다.
@import
사용의 큰 장점 중 하나는 프로젝트 설정에 프레임 워크를 추가 할 필요가 없으며 자동으로 수행된다는 것 입니다. 즉, 더하기 버튼을 클릭하고 프레임 워크 (황금 도구 상자)를 검색하는 단계를 건너 뛰고 "프레임 워크"그룹으로 이동할 수 있습니다. 많은 개발자들이 "링커 오류"메시지에서 벗어날 수 있습니다.
@import
키워드를 사용할 필요는 없습니다. 모듈 사용을 선택하면 모든 #import
및 #include
@import
자동으로 사용하도록 매핑됩니다. 즉, 소스 코드 (또는 다른 곳에서 다운로드 한 라이브러리의 소스 코드)를 변경할 필요가 없습니다. 모듈을 사용하면 특히 PCH를 잘 사용하지 않았거나 프로젝트에 작은 소스 파일이 많은 경우 빌드 성능도 향상됩니다.
모듈은 대부분의 Apple 프레임 워크 (UIKit, MapKit, GameKit 등) 용으로 미리 빌드됩니다. 직접 생성 한 프레임 워크와 함께 사용할 수 있습니다. Xcode에서 Swift 프레임 워크를 생성하면 자동으로 생성되며 Apple 또는 타사 라이브러리에 대한 ".modulemap"파일을 직접 생성 할 수 있습니다.
코드 완성을 사용하여 사용 가능한 프레임 워크 목록을 볼 수 있습니다.
모듈은 Xcode 5의 새 프로젝트에서 기본적으로 활성화됩니다 . 이전 프로젝트에서 활성화하려면 프로젝트 빌드 설정으로 이동하여 "모듈"을 검색하고 "모듈 활성화"를 "예"로 설정합니다. "Link Frameworks"도 "YES"여야합니다.
Xcode 5 및 iOS 7 또는 Mavericks SDK를 사용해야하지만 이전 OS (예 : iOS 4.3 등) 용으로 출시 할 수 있습니다. 모듈은 코드 작성 방법이나 소스 코드를 변경하지 않습니다.
WWDC 슬라이드에서 :
- 프레임 워크의 완전한 의미 설명을 가져옵니다.
- 헤더를 파싱 할 필요가 없습니다.
- 프레임 워크의 인터페이스를 가져 오는 더 나은 방법
- 이진 표현을로드합니다.
- 미리 컴파일 된 헤더보다 더 유연함
- 로컬 매크로 정의의 영향에 영향을받지 않음
#define readonly 0x01
- 기본적으로 새 프로젝트에 사용 가능
모듈을 명시 적으로 사용하려면 :
#import <Cocoa/Cocoa.h>
를 @import Cocoa;
다음 표기법으로 하나의 헤더 만 가져올 수도 있습니다.
@import iAd.ADBannerView;
Xcode에서 하위 모듈이 자동 완성됩니다.
출처 : https://stackoverflow.com/questions/18947516/import-vs-import-ios-7
'개발관련 > other' 카테고리의 다른 글
IntelliJ에서 jar를 올바르게 빌드하는 방법 (0) | 2021.12.04 |
---|---|
REST API / 웹 서비스 보안을위한 모범 사례 (0) | 2021.12.04 |
Rake 작업 내에서 Rake 작업을 실행하는 방법 (0) | 2021.12.03 |
Ruby : 특정 버전의 Ruby gem을 설치하는 방법 (0) | 2021.11.30 |
내 시스템에서 RVM (Ruby Version Manager)을 제거하는 방법 (0) | 2021.11.30 |