Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重复符号(使用库的项目使用与项目相同的库)_Ios_Objective C_Xcode - Fatal编程技术网

Ios 重复符号(使用库的项目使用与项目相同的库)

Ios 重复符号(使用库的项目使用与项目相同的库),ios,objective-c,xcode,Ios,Objective C,Xcode,A是静态库。 B是使用A库的静态库。 C是同时使用A和B库的应用程序 C中重复符号的问题很明显 什么是避免此问题的适当(官方)解决方案。我真的想在B中使用A。所有A,B,C都是在一个Xcode工作区中的矿山项目。导入ie时出现问题 #import "A.h" #import "B.h" #import "C.h" 在彼此的接口中。。避免这种情况的更好方法是不要在接口类中导入.h文件,而是可以轻松地进行导入 @class A; @class B; @class C; 在界面中,将相应的.h类导

A
是静态库。
B
是使用
A
库的静态库。
C
是同时使用
A
B
库的应用程序

C
中重复符号的问题很明显


什么是避免此问题的适当(官方)解决方案。我真的想在
B
中使用
A
。所有
A
B
C
都是在一个Xcode工作区中的矿山项目。

导入ie时出现问题

#import "A.h"
#import "B.h"
#import "C.h"
在彼此的接口中。。避免这种情况的更好方法是不要在接口类中导入
.h
文件,而是可以轻松地进行导入

@class A;
@class B;
@class C;
在界面中,将相应的
.h
类导入
.m
文件中

所以应该是这样的

A.h
类中

@class B;
@class C;

@interface A : NSObject

@end
#import "B.h"
#import "C.h"
@implementation A

@end
上午A.mclass

@class B;
@class C;

@interface A : NSObject

@end
#import "B.h"
#import "C.h"
@implementation A

@end

@部分回答了我的问题。不幸的是,在评论中。由于他没有回答我可以接受的评论回答,我引用他的话来结束这个问题


“静态库直接编译到可执行文件/库中,因此不需要将
C
A
链接。在
B
中使用
A
,在应用程序中使用
B
,但不要将
A
直接链接到应用程序。只需包含
A
中的标题即可;您不需要单独链接它,因为它已经包含在
B
中。“

静态库直接编译到可执行文件/库中,因此您不需要将
C
A
链接。在
B
中使用
A
,在应用程序中使用
B
,但不要将
A
直接链接到应用程序。只需包含
A
中的标题即可;您不需要单独链接它,因为它已经包含在
B
中。为什么不只在C中公开库A的头文件,而不将其包含在您的工作区中?库B与库A一起编译,因此您必须能够在C中使用A,而不必单独包含它。附言:我没有试过,这只是一个建议。谢谢。如果你把你的评论换成回答,我会接受。这个回答的前提是错误的<代码>#导入(与#包含)相反)确保每个标题只导入一次且仅导入一次。这不是问题的原因,链接似乎是。另一方面,建议使用
@classx
in header与导入整个header相对应是一个不错的选择(但请注意,有时从header导入header是不可避免的,例如当从另一个类继承或使用外部定义的协议时)。这不是一个错误的答案,这可以顺利且高效地解决重复条目的问题@rsanchezsaez您是否尝试过证明其错误的解决方案?我澄清了我的评论。我不想太苛刻,因为我认为这个答案实际上是一个很好的建议。@MatthiasBauch Downvote绝对不是解决方案,您可能会选择尝试改进我的答案。@iphone:您的问题表明,
#import
语句可以包含相同的头两次,这将导致编译时出现问题。事实并非如此。请参阅我编辑的第一条评论。因此,是的,对不起,但这是一个错误的答案,因为:a)它包含非事实信息,b)建议(更像是一个好的编码实践)解决了一个与问题中所述不同的问题。