2017-03-10 2 views
0

나는 #include에 대해 #import이 작동하는 방식을 이해합니다. 전체 "아직 포함되지 않은 경우에만 포함"합니다. 나는 또한 애플이 Objective-C 코드를 #import하는 것을 꽤 좋아한다는 것을 이해한다. 그래서 Xcode에서는 어디에도 가지 않고 모든 것이 잘된다.#import가 사용되지 않는 이유는 무엇입니까?

Android Studio와 같은 다른 환경에서는 받아들이지 않지만 #import은 더 이상 사용되지 않으며 경고 메시지가 표시됩니다. 왜 그런가요?

#import은 기능상으로 다르며 필요한 경우에 따라 #include보다 논란의 여지가 있지만 어떤 경우에는 논란의 여지가 있습니다. 그렇다면 잠재적으로 유용한 도구를 사용하지 않는 이유는 무엇입니까? 특히 더 나은 것으로 대체되는 징후가없는 경우?

사용하기에 전적으로 바람직하지 않은 끔찍한 결함이 있습니까?

+0

볼 수있는이에 대한 자세한 정보를 얻으려면'#의 import'이 유효 자바하지 않습니다. 너 무슨 소리 야? – Alexander

+0

@ Alexander : 아마도 OP는 Android 개발에도 사용할 수있는 c/C++에 대해 이야기하고 있습니다. –

+0

네, 죄송합니다. JNI로 작업한다면 Java로 C++ 코드를 사용할 수 있습니다. – DisturbedNeo

답변

0

Objective-C는 C 프로그래밍 언어의 상위 집합이므로 #import 문은 C의 #include 문에 따라 미세하게 수정됩니다. #include 문은 매우 간단합니다. 컴파일하는 동안 포함 된 파일에서 찾은 모든 내용을 코드에 복사합니다. 때로는 심각한 문제가 발생할 수 있습니다. 이로 인해 루프가 생기고 컴파일러를 혼동시킬 수 있습니다. 이를 처리하기 위해 C 프로그래머는 이러한 유형의 이벤트에 대한 경비원을 작성해야합니다.

#import을 사용할 때이 문제에 대해 걱정할 필요가 없으며 헤더 가드를 작성하지 않아도됩니다. 그러나 #import은 여전히 ​​눈에 띄는 복사하여 붙여 넣기 작업으로 다른 작지만 여전히 위험한 문제 (예 : 사용자 코드에서 다른 것으로 선언 된 내용을 덮어 쓴 포함 파일)의 컴파일 시간이 느려집니다.

@import UIKit; 

그것은 모듈 또는 "의미 오기"라는 새로운 기능이있다 : 아이폰 OS 7에서

는 애플 파일을 가져올 수있는 새로운 방법을 소개했다. 모듈은 위의 문제를 해결하기위한 시도입니다. 더 이상 소스 코드에 복사하여 붙여 넣기가 아니라 필요할 때만 소스 코드로 가져올 수있는 포함 된 파일을 일련 번호로 표시합니다. 모듈을 사용하면 일반적으로 코드가 더 빨리 컴파일되고 #include 또는 #import을 사용하는 것보다 안전합니다.

, 당신은 WWDC 2013

+0

나는 Apple의 Obj-C "@import"가 일반 "# import"와 다르게 작동합니다. 정말 재미 있어요. 그러나 "#include"보다 개선 된 부분이 있다면 "# import"가 일부 환경에서 비추천으로 간주되는 이유에 대한 질문에 대답 할 수 있을지 확신 할 수 없습니다. – DisturbedNeo

관련 문제