为什么在创建项目范围的常数时需要一个实现文件(.m)



目前我以这种方式创建常数:

// Constants.h
FOUNDATION_EXPORT NSString *const kTestConstant;
// Constants.m
NSString *const kTestConstant = @"TestConstant";

这当然可以正常工作,但是我很困惑为什么我不能将其全部放在标题文件中:

NSString *const kTestConstant = @"TestConstant";

如果我这样做,请在各个类中包括常数。为什么是?

我的理论是,通过仅在标头文件上具有常数,文件常数。但是,通过使用实现文件,该文件已编译并与导入常数的类链接。这或多或少正确吗?

本质上是您的分析是正确的,除了"粘贴"的"现代"概念。编译单元是直接或间接包含/导入的所有标头文件的串联和实现文件。

一如既往,我建议获得一本好的" C"语言书并研究它,Objective-C只是" C"之上的薄层。那是我几年前所做的,仍然有这本书。

相关内容

最新更新