类型冲突ios

时间:2012-07-18 16:27:23

标签: ios xcode header-files

我不知道它是否是XCode中的缺陷或者我在Obj-C中缺乏经验但我遇到了一个问题,试图在一个包含指向另一个的指针的类中创建属性,而另一个类有一个包含指向第一个类的指针的属性。

我知道上面的内容可能不太清楚,但希望这个例子说明我的意思:

//Class Journal.h

@property (strong) JournalVC *JVC

//Class JournalVC.h
//IVar
Journal *_Journal

在这两个类中,我导入另一个的头,因此XCode知道另一个的类。如果我不导入标题,它会抱怨它不知道属性/ IVar应该是什么类型,并且想要用它来替换它(JournalVC作为Journal反之亦然)。当两个类都有另一个头的import语句时,也会发生这种情况。

如果只有一个人知道另一个,就不会发生这种情况。当JournalVC被UIVIewController(它的父类)替换而没有import语句时,它可以工作,而IVar保持不变,并且标头导入另一个。

我认为问题是两个标头都互相导入,这会导致与XCode混淆。有没有其他方法让其中一个头文件知道该属性的类没有这个问题?

1 个答案:

答案 0 :(得分:5)

您可以使用@class转发声明。不要进行圆形标题导入;相反,只需在JournalVC标题中使用以下行声明Journal类:

@class Journal;

然后,在JournalVC.m中执行传统的标头导入。有关详细信息,请参阅this question