gpt4 book ai didi

c++ - Objective-C @class/import 最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:26 25 4
gpt4 key购买 nike

我注意到很多 Objective-C 示例将使用@class 转发声明类,然后实际使用导入将类导入 .m 文件中。我知道这被认为是最佳实践,如问题的答案中所述:@class vs. #import

来自 C++,这感觉倒退了。我通常会在新类头文件中包含所有需要的 .h 文件。这似乎很有用,因为它会使编译器在两个类相互包含时生成警告,此时我可以决定这是否是一件坏事,然后使用相同的 Objective-C 样式并在 header 中转发声明该类,将其包含在 .cpp 文件中。

前向声明@class 并在实现文件中导入有什么好处?转发声明类而不是包含头文件是否应该是 C++ 中的最佳实践?或者以这些相似的术语开始思考 Objective-C 和 C++ 是错误的吗?

最佳答案

说实话,你的C++其实是倒退的。通常在 C++ 中,您希望避免将 header 包含在其他 header 中,而更喜欢前向声明而不是包含。这通常被认为是最佳实践,因为它减少了编译时间,并将馈送到编译器的预处理代码文件的大小缩小到所需的大小。 Scott Meyers 在 Effective C++ 中有一个关于此的重要部分。

为了更直接地回答您的问题,前向声明类并将它们导入实现文件(在 C++ 和 objective-c 中)的优点基本上是前向声明使得使用您的类的任何其他类都不会'不一定需要包括您类(class)使用的所有东西。这减少了预处理代码文件的大小(使预处理更快),使编译更快,链接更快。所有这些通常都是好事。在更模糊的情况下,减少 include 语句可以更容易地找到某些类型的错误(例如 header 中缺少分号),这些错误会产生编译器警告,这些警告并不总是很明显,但会在包含 header 的所有地方重复和垃圾邮件。

关于c++ - Objective-C @class/import 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com