iphone - Xcode:子类化我自己的类时出现非常奇怪的错误

标签 iphone xcode subclassing

我有一个 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/

相关文章:

iphone - 调用位于属性列表中的字符串数组

ios - 将 UIDatePicker Timezone 设置为模拟器的当前时区

c# - 决定需要哪个子类的最佳方法

iphone - 呈现一个屏幕大小一半的 View Controller

ios - 无法让 Rdio iOS SDK 播放正常工作

java - 我可以提供使用泛型类型的方法,其中泛型类型始终是类吗?

playframework - 无法使用 Ebean 在 Play 中创建基模型类

iphone - UILocalNotification 未在正确的时间调用

iphone - 具有在线内容的 NSArray

iphone - 动态检查类是否通过 respondsToSelector : 响应选择器