iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 获取“重复的界面定义”错误,绝对必须#importing头文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在为iOS项目提供很多方法和定义,这些方法和定义与AppDelegate中许多不同的类通用。所以,在每个这些类中,在.h文件中,我使用#import“AppDelegate.h”。这可以正常工作,直到我需要访问已经将AppDelegate导入到导入AppDelegate的另一个类中的其中一个类。此时,我得到AppDelegate的重复界面定义错误。 好的,这样看起来很公平。我已经将AppDel
我正在为iOS项目提供很多方法和定义,这些方法和定义与AppDelegate中许多不同的类通用。所以,在每个这些类中,在.h文件中,我使用#import“AppDelegate.h”。这可以正常工作,直到我需要访问已经将AppDelegate导入到导入AppDelegate的另一个类中的其中一个类。此时,我得到AppDelegate的重复界面定义错误

好的,这样看起来很公平。我已经将AppDelegate导入到我要导入的文件中,所以AppDelegate正在从两个不同的地方导入。所以我删除AppDelegate行,一切都很好。

但是当我需要导入两个需要导入AppDelegate的类时会发生什么?

我有一个非常具体的问题,我正试图围着我,我知道这是由与这个有关的事情造成的,但我不知道什么。所以我希望如果我知道我应该如何处理这种导入,并排序一切,并希望这解决了我的问题。所以要更具体地说:

我有ClassA.h,ClassB.h和ClassC.h。所有的都有#import“AppDelegate.h”。当我需要在ClassA中使用#import“ClassB.h”时,我从ClassA中删除#import“AppDelegate.h”行。一切顺利但是如果我还需要将“ClassC.h”导入ClassA,但是ClassB和ClassC需要#import“AppDelegate.h”,会怎么样?

编辑:

我在一个干净的项目中尝试了上面描述的确切场景,并且它建立得很好,所以还有其他的东西在玩。但是我可以肯定地说,当这个问题出现在这个项目之前,它是AppDelegate的一个重复的接口定义,当我删除了#import“AppDelegate.h”行时,错误消失了,我还是通过其他导入的文件访问AppDelegate.h方法和枚举。

解决方法

最好的预防和治疗方法是遵循关于何时从头文件导入的一些准则。作为一般规则,除非在这些情况下,不要从Objective-C头进行导入:

>您需要扩展在另一个标题中声明的类。
>您需要声明符合另一个声明的协议
头。
>您需要引用在公共方法和/或属性中的另一个标头中定义的非类,非协议类型。要引用协议和类,forWARD使用@class或@protocol声明它们,如@class ClassFromOtherHeader;

每个其他#import应该在你的实现。我的建议是根据这些规则,将所有的#import语句从头文件移动到实现文件中。从你认为的问题的根源开始,向外移动。这将解决您的问题,并为您提供更清晰的代码和更快的构建时间的副作用。

大佬总结

以上是大佬教程为你收集整理的objective-c – 获取“重复的界面定义”错误,绝对必须#importing头文件全部内容,希望文章能够帮你解决objective-c – 获取“重复的界面定义”错误,绝对必须#importing头文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。