개발관련/other

[iOS 7] @import vs #import

Rateye 2021. 12. 3. 08:51
728x90
반응형
질문 : @import 대 #import-iOS 7

나는 WWDC 비디오 "Implementing Engaging UI on iOS"에서 논의 된 바와 같이 새로운 iOS 7 기능 중 일부를 가지고 놀면서 일부 이미지 효과로 작업하고 있습니다. 세션의 소스 코드 내에서 흐림 효과를 생성하기 위해 UIImage 는 다음과 같이 UIKit을 가져 오는 범주를 통해 확장되었습니다.

@import UIKit;

다른 세션 비디오에서 이것에 대해 본 것 같지만 찾는 데 어려움이 있습니다. 이것을 언제 사용할 지에 대한 배경 정보를 찾고 있습니다. Apple 프레임 워크에서만 사용할 수 있습니까? 이 컴파일러 지시문을 사용하면 이전 코드로 돌아가서 업데이트해야하는 이점이 있습니까?

답변

모듈 또는 "의미 적 가져 오기"라는 새로운 기능입니다. 세션 205404 에 대한 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
728x90
반응형