关于一个交叉引用Bug:“can not find interface declaration”
2011-11-23 13:36
471 查看
这是GCC编译器的一个Bug,与Xcode4.2或者3.2无关。在Xcode的任何版本都会报这个错误。
你有一个类A:
#import <Foundation/Foundation.h>
#import "B.h"
@interface A : NSObject
@end
#import "A.h"
@implementation A
@end
还有一个类B:
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : NSObject
@end
#import "B.h"
@implementation B
@end
然后你决定从A继承一个类,子类C:
#import "A.h"
@interface C : A
@end
#import "C.h"
@implementation C
@end
一切,OK,编译通过。然后你决定让B也继承A:
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : A
@end
这时候问题来了,编译器告诉你“can not find interface of declaration for ‘A’,superclass of ‘B’”。
怎么可能?B中明明import了A.h,而且通过command键+鼠标左键,也可以从B中找到A的接口声明。你尝试了各种方法,就是找不到问题出在哪里。而且C同样是A的子类,C和B除了类名外,代码没有任何不同。难道Cocoa限制了一个类的子类数量?一个子类可以继承,第2个就不行?
不用大惊失色。问题在于A中import了B.h,而B又引用了A,这就构成了交叉引用。不过编译器却给出了一个让人混淆不清的提示“找不到父类接口”。
你有一个类A:
#import <Foundation/Foundation.h>
#import "B.h"
@interface A : NSObject
@end
#import "A.h"
@implementation A
@end
还有一个类B:
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : NSObject
@end
#import "B.h"
@implementation B
@end
然后你决定从A继承一个类,子类C:
#import "A.h"
@interface C : A
@end
#import "C.h"
@implementation C
@end
一切,OK,编译通过。然后你决定让B也继承A:
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : A
@end
这时候问题来了,编译器告诉你“can not find interface of declaration for ‘A’,superclass of ‘B’”。
怎么可能?B中明明import了A.h,而且通过command键+鼠标左键,也可以从B中找到A的接口声明。你尝试了各种方法,就是找不到问题出在哪里。而且C同样是A的子类,C和B除了类名外,代码没有任何不同。难道Cocoa限制了一个类的子类数量?一个子类可以继承,第2个就不行?
不用大惊失色。问题在于A中import了B.h,而B又引用了A,这就构成了交叉引用。不过编译器却给出了一个让人混淆不清的提示“找不到父类接口”。
相关文章推荐
- 关于一个交叉引用Bug:“can not find interface declaration”
- can not find interface declaration
- 关于 can not find hdf5.h(hdf5:没有那个文件或目录)的解决方法
- 关于jstl taglib的错误 Can not find the tag library descriptor for “http://java.sun.com/jstl/core”
- 关于网络请求的一个异常bug(java.lang.IllegalArgumentException: Host name may not be null)
- 关于Can't find dependent libraries的一个解决办法
- 关于eclipse在引用外来Crouton的库的时候出现 Could not find library.apk! 错误的处理
- 关于Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/ core"问题解决
- 关于UIInterfaceOrientation的一个bug
- 关于“ can not find ./obj/local/armeabi/libopencv_contrib.a: Permission denied ”问题
- 关于python同一个文件夹里面不同.py文件的交叉引用
- 关于dubbo创建服务和引用服务时,会报错:cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 问题的解决
- C++ 标准模板库学习之 string 类 详解 (一) 将一个句子中每个单词的单词字母顺序翻转 关于npos find_first_not_of find_first_of getline
- 关于jstl taglib的错误 Can not find the tag library descriptor for “http://java.sun.com/jstl/core”
- Qt4中的一个关于消息处理的BUG
- struts2文件下载出现Can not find a java.io.InputStream with the name的错误
- 编译系统源码*** Can not find ProjectConfig.mk , MTK_PROJECT_CONFIGS = 。 停止。
- 关于warning:could not find /tmp. please create! 的错误解决
- 今天非常高兴,解决了一个关于java类转json时有关联对象而且困扰我很久的BUG
- 关于Hadoop查看进程时jps命令出现Error: could not find libjava.so