Xcode: Copy Headers: Public vs. Private vs. Project? Xcode:复制头文件:公共 vs. 私有 vs. 项目?
Xcode: Copy Headers: Public vs. Private vs. Project
在Xcode中,我们可以将头文件分为三种类型:public、private和project。public类型是对外公开的API,可以被其他模块的代码使用;private类型也是对外公开的API,但是使用它可能存在一定的风险;project类型的API对外不可见,只能在本模块中使用,实现了一种模块级别的封装。
在Xcode中,头文件的存放位置是由"Public Headers Folder Path"和"Private Headers Folder Path"这两个属性决定的。默认情况下,头文件存放在$(CONTENTS_FOLDER_PATH)/Headers目录下,而私有头文件存放在$(CONTENTS_FOLDER_PATH)/PrivateHeaders目录下。
为了将Objective-C代码暴露给Objective-C或Swift消费者,我们可以使用.modulemap文件和public类型的头文件。.modulemap文件是一个描述模块的文件,其中只能包含public类型的头文件或者出错。
如果我们想将Objective-C代码暴露给非模块使用的Objective-C消费者,可以使用umbrella头文件。通过导入umbrella头文件,我们可以使用项目的public和private类型的头文件。但是,如果我们导入了项目中的private类型的头文件,Xcode会报错,提示文件找不到。
通过合理地使用public、private和project类型的头文件,我们可以实现对外的API封装和控制,保证项目的安全性和可维护性。
Xcode: Copy Headers: Public vs. Private vs. Project是一个关于Xcode中头文件可见性设置的问题。问题的出现的原因是Xcode项目中,需要根据头文件的使用情况来确定其可见性,以便正确地构建和分发产品。解决该问题的方法是通过在Xcode中设置头文件的可见性选项来控制其在产品中的可见性。
在Xcode中,有三种可见性选项:Public、Private和Project。
Public表示接口已经最终确定并且可以被产品的客户使用。Public头文件以可读的源代码形式包含在产品中,没有任何限制。
Private表示该接口不适用于产品的客户端,或者处于开发的早期阶段。Private头文件包含在产品中,但被标记为“private”。因此,这些符号对所有客户端都可见,但客户端应该明白它们不应该使用这些符号。
Project表示该接口仅供当前项目中的实现文件使用。Project头文件不包含在目标中,除非是以对象代码的形式。这些符号对客户端完全不可见,仅对开发者可见。
这些可见性选项可以在Xcode的文件检查器中的“Target Membership”下找到。
总之,通过在Xcode中设置头文件的可见性选项,可以控制头文件在产品中的可见性,从而正确地构建和分发产品。
Xcode: Copy Headers: Public vs. Private vs. Project
在使用Xcode进行项目开发时,我们经常会遇到一些关于头文件的复制和引用的问题。在Xcode中,有三种不同的头文件标记,即Public、Private和Project。那么为什么会出现这个问题以及如何解决呢?
首先,如果你打算将你的项目作为一个子项目分发给其他用户,并希望他们将你的项目包含在他们自己的项目中,那么你应该将你的头文件标记为'Project'。如果不这样做,就会出现像这样的问题:Xcode 4 Archive Version Unspecified。需要注意的是,这个规则适用于所有的子项目,包括子项目的子项目,以此类推。
其次,如果你希望你的库的用户只链接你的目标文件(而不包含你的原始项目),那么请确保你的头文件标记为'Public'(仅针对他们需要引用的头文件)。这里最重要的一点是要记住:由于上述引用的bug(Xcode的一个bug:如果一个库有公共头文件,并且被嵌入,Xcode归档器就会出现错误,并且没有解决方法),目前Apple不允许简单地“分发一个库”并让用户决定如何使用它。
此外,如果你在讨论一个Xcode的bug,请包括版本号。SO(Stack Overflow)的回答会一直存在很长时间,现在的一个bug在发布了某个版本之后就不再是一个bug了。
总之,Xcode中的头文件复制和引用问题是由于项目分发和库的使用方式不同而导致的。通过将头文件标记为'Project'或'Public',可以解决这些问题。但是需要注意的是,在使用Xcode时,需要关注和避免一些已知的bug,以确保项目的正常运行和开发效率。