ios - #import “” (嵌入头文件) 在 .h 和 .m 文件中有什么区别?
高洛峰
高洛峰 2017-04-17 17:30:22
0
7
463

如果在不考虑交叉引用的情况下,#import “” (嵌入头文件) 在 .h 和 .m 文件中会有什么区别?
求各位大神解答?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(7)
伊谢尔伦

헤더 파일에서 헤더 파일을 참조하면 컴파일 중에 가져온 헤더 파일의 모든 인터페이스 정보를 알 수 있습니다. 예를 들어 B.h를 A.h로 가져왔다면 나중에 A.h를 SubA.h로 가져오면 됩니다. B.h, 불필요한 컴파일 및 낮은 응집력 추가
컴파일러는 필요할 때만 클래스의 인터페이스 정보를 알 수 있으므로 컴파일 시간이 단축됩니다. 수업 사이에는 온도가 내려갑니다

阿神

질문하신 분 말씀대로 면접 질문이라면 이렇게 대답하시면 됩니다.

.h 대신 .m으로 가져오기를 시도해야 합니다. 그 이유는 다른 응답자들이 잘 설명했습니다. .h에서 사용되는 타입은 최대한 @class로 선언한 후 .m으로 임포트해야 합니다. .h에서 가져오기를 수행해야 하는 상황은 두 가지뿐입니다. 1. 상속된 상위 클래스 2. 특정 프로토콜 구현.

左手右手慢动作

.h는 설명
.m은 구현
일반적으로 .h에 사용된 클래스를 .h로 가져와야 한다면
.h에서 사용하지 않으면 다음과 같습니다. .m에서 사용됩니다. .m(또는 .h)으로 가져올 수 있습니다

자세한 내용은 코딩 표준을 참조하세요
일반적으로 편의상 .h에 사용된 내용은 .h에 인용됩니다
.m에 사용된 내용은 .m에 인용됩니다

PHPzhong

어디서나 가져올 수 있습니다
.h 파일은 전혀 가져올 필요가 없습니다.

하지만 내 접근 방식은 기본적으로
.h에서 @Class를 사용하는 것으로 충분합니다
.m에서 #import를 사용

합니다.
Peter_Zhu

위의 누구도 이 의견에 해당하지 않는 것 같습니다.

가장 큰 차이점은 .m으로 작성하면 상호 참조를 효과적으로 줄일 수 있다는 점입니다. 좀 더 주의를 기울이면 Fundition과 UIKit 프레임워크가 모두 .m 참조와 .h를 사용한다는 것을 알 수 있습니다. 클래스 선언을 사용합니다. 이 메서드는 앱의 실행 시간에 영향을 미치지 않지만, 프로젝트 규모가 클수록 이러한 영향은 더욱 분명해집니다.

그래서 xcode6의 기본 템플릿에서는 컴파일 속도를 향상시키기 위해 이전 공개 헤더 파일인 .pch 파일을 제거했습니다.

도움이 되었기를 바랍니다.

PHPzhong

Objective-C 언어는 동적 기능을 지원하므로 컴파일 시에만 명령문을 제공하면 됩니다. 구현되지 않아도 상관없습니다. 그러나 런타임 시 해당 구현을 찾을 수 있습니다. 메시지가 실제로 전송되지 않으면 구현은 해당 프로세스를 따릅니다.

가져오기 .h 파일은 헤더 파일 선언만 도입하고 컴파일 시 구현에는 신경 쓰지 않습니다. 따라서 .m 파일에 해당 메서드가 구현되어 있지 않으면 오류가 보고되지 않습니다.
가져오기 .m 파일은 일반적으로 구현 파일입니다. 물론 의사 비공개 API(확장을 통해 구현됨)도 있습니다. 메소드 선택기->IMP 관계 테이블은 런타임에 발견됩니다.

우리는 반복적으로 언급하는 경우가 많기 때문에 상호 참조 방지는 필수입니다.

동적으로 메시지를 보내는 방법에 대한 자세한 내용은 http://www.henishuo.com/runtime-message-forwarding/을 참조하세요.

伊谢尔伦

팁:
#import를 사용하면 상호 참조를 방지할 수 있다는 사실을 모르는 사람들이 많습니다.
이것이 #import와 #include의 차이점이기도 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿