引用冲突问题

来源:互联网 发布:seo实战经验 编辑:程序博客网 时间:2024/06/05 10:03

引用冲突问题
报错图片

今天在进行页面跳转时在页面 GongYingDetailViewController.h页面中引用了 #import “GongYingAndCaiGouViewController.m”
结果导致以上问题出现。注:引用的文件只能是.h文件,不能用.m。正常情况下只要引用.m是会直接在引用位置报错,极少出现以上报错情况。(特此提醒自己要仔细)

出现(linker command failed with exit code 1)的原因:

1).看看是不是有新添加的文件跟之前文件同名

2).错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。

3).SVN或git忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改SVN(git)的忽略设置

4).把.a文件删除再重新拖到项目中解决问题

5).可能重复添加了文件(也可能没勾选 Copy items if neded 这个选项),建议删除后重新添加

6).工程中文件名重复了 也会出现同样的错误

7).”Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode

8).可能在引用的时候 可能写的是#import “XXXXX.m” ,如果是改为#import “XXXXX.h”

9).可能你导入的SDK只能在真机下才能运行,模拟器会报错!

附带:#import比起#include的好处就是不会引起交叉编译 在 Objective-C中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题 @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import @class就是告诉编译器有这么一个类,至于类的定义是啥不知道 @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import “”的意思是自己创建的文件,用这个首先会在当前的目录中寻找,如果找不到就到其他的位置寻找,“”和<是相对的一个是自己创建的文件一个是系统的文件

0 0
原创粉丝点击