我不知道它是否是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混淆。有没有其他方法让其中一个头文件知道该属性的类没有这个问题?
答案 0 :(得分:5)
您可以使用@class
转发声明。不要进行圆形标题导入;相反,只需在JournalVC标题中使用以下行声明Journal类:
@class Journal;
然后,在JournalVC.m
中执行传统的标头导入。有关详细信息,请参阅this question。