我有一个 iPhone 应用程序,其中包含一个自定义类 Detail
,它是我创建的 UIViewController
的子类。
我需要创建 Detail
的子类,并且我想将其命名为 ActivityDetail
。所以我在 ActivityDetail.h 文件中编写了以下内容:
#import <UIKit/UIKit.h>
#import "Detail.h"
@interface ActivityDetail : Detail {
}
@end
问题是我收到编译器错误告诉我:
error: cannot find interface declaration for 'Detail', superclass of 'ActivityDetail'
奇怪的是:我可以将父类(super class)从 Detail
更改为 UIView
(例如),编译得到很多错误(显然),然后更改父类(super class)再次查看Detail
,一切正常!但是,如果我对 Detail
类进行任何更改,问题就会从头开始......
我该如何解决这个问题?
最佳答案
建议不要导入超出头文件中默认 Foundation 或 UIKit 导入范围的类。相反,你应该做类似的事情:
标题
#import <UIKit/UIKit.h>
@class Detail;
@interface ActivityDetail : Detail {
}
@end
实现
#import "ActivityDetail.h"
#import "Detail.h"
@implementation ActivityDetail
@end
这允许您的 header “了解”其他类,而无需强制该 header 的所有“导入者”也导入它导入的所有内容。
<小时/> Here is a great reference question ,关于 @class
和 #import
的使用,这是一个很好的答案。
关于iphone - Xcode:子类化我自己的类时出现非常奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822795/