类型冲突ios

RMD*_*Dan 2 xcode header-files ios

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

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

//Class Journal.h

@property (strong) JournalVC *JVC

//Class JournalVC.h
//IVar
Journal *_Journal
Run Code Online (Sandbox Code Playgroud)

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

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

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

Tim*_*Tim 5

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

@class Journal;
Run Code Online (Sandbox Code Playgroud)

然后,执行传统的标头导入JournalVC.m.有关详细信息,请参阅此问题.