如何在Objective-C中正确导入头文件

时间:2013-03-14 01:29:09

标签: objective-c

enter image description here

我导入PaiLifeCardLeftViewController.h,但Xcode告诉我这是一种未知类型。

我该如何解决这个问题,谢谢。

编辑:PaiLifeCardLeftViewController.h: enter image description here

2 个答案:

答案 0 :(得分:3)

此问题是由PaiLifeCardLeftViewControllerPaiLifeCardCenterViewController之间的循环依赖引起的。每个相应的.h文件都试图导入另一个.h文件。你不能这样做。

正确的解决方案是更新两个.h文件。在两者中,删除另一个.h的导入,并用@class前向声明替换它。

PaiLifeCardLeftViewController.h:

#import <UIKit/UIKit.h>
#import "PaiLifeCardRefreshDelegate.h"

@class PaiLifeCardCenterViewController;

@interface PaiLifeCardLeftViewController : UITableViewController

@property (strong, non atomic) id<PaiLifeCardRefreshDelegate> delegate

@end

PaiLifeCardCenterViewController.h进行类似的更改。

然后,您必须将导入添加到.m文件。

您应该尽可能少地导入.h文件中的导入。在可能的情况下使用前向(@class)声明总是更好。它避免了循环依赖,它使编译速度更快,并且在更改.h文件时导致更少的重新编译。

侧面 - 注意。无需为delegate声明实例变量。它将为您合成。

答案 1 :(得分:1)

您可以通过添加

向班级发出前瞻性声明

@class PaiLifeCardCenterViewController

@interface陈述之前