|
|
1
10
除非您是从要包含的类继承,否则不应在头中包含头。
如果需要将对象包含为接口变量,则应使用
编译器将知道您的实例变量是指向对象的指针,但在解析标头时它不知道对象的详细信息。它需要知道的只是它是一个类。然后,编译器在解析实现文件时可以看到类的方法;此时,它确实需要类来验证它是否响应您发送的消息。 更新: 我本打算更新我的答案,以回答后面的一些问题,但是 Rob Napier has a good follow-up |
|
|
2
13
约翰给出了很好的建议,但这里有一些关于为什么、为什么和例外的背景。
因此,即使您不太关心构建时间(尽管您应该),也要避免将头导入头中。。。除了
一些标题可以帮助你
有
进口。当然是你的超类。定义
那么系统头呢?好吧,它们永远不会导致搅动,而且显然它们不会导致递归导入,所以它们很好。我不鼓励人们使用
所以这不是一个简单的问题,但简单的规则是:在编译器允许的任何时候,避免将用户头导入到其他用户头中。 |
|
|
3
0
您不仅要将头包含到实现文件中,还要包含到使用该类的其他文件中。如果在标头中包含所有依赖项,则仅用于使用该标头定义的特定类的所有其他文件(包括该标头)本身也将包含所有依赖项。
这不仅会产生噪音,而且会在类引用自身时导致问题。每个类都必须在另一个类之前导入,这导致首先导入一个类,然后找不到另一个类的类型。这导致您发布了一条神秘的错误消息,这基本上意味着编译器无法找到
|
|
|
KanKonga · 为什么这个swift代码没有显示在文本字段中? 3 年前 |
|
|
Community wiki · 目标的Xcode构建阶段的自动更新? 3 年前 |
|
|
Anton Timonin · 如何正确地将动态pod库更改为静态? 3 年前 |
|
|
Igor · 在OSX中,捆绑包的用户首选项在哪里? 3 年前 |
|
|
narner · 从Swift包创建Cocoapods框架 3 年前 |