Iphone 循环依赖&引用;预期的说明符限定符列表“;

Iphone 循环依赖&引用;预期的说明符限定符列表“;,iphone,objective-c,Iphone,Objective C,我得到了预期的说明符限定符列表错误,在搜索时,一些人描述了循环依赖性。我不确定这是什么意思,如果可能的话,我可以解释一下。基本上,我有一个类Foo,它在.m文件中使用了Bar类型。我不需要一个酒吧。我以为我可以在Foo.h文件中导入“Bar.h”,因为Foo.m导入了Foo.h文件,但这就是我得到错误的地方。在这种情况下,为什么要将它放在.m文件中,而不仅仅是将所有内容都包含在.h文件中,以使文件顶部的内容更清晰?对不起,如果这是一个愚蠢的问题。谢谢。循环依赖项正是它听起来的样子。你肯定有一个

我得到了预期的说明符限定符列表错误,在搜索时,一些人描述了循环依赖性。我不确定这是什么意思,如果可能的话,我可以解释一下。基本上,我有一个类Foo,它在.m文件中使用了Bar类型。我不需要一个酒吧。我以为我可以在Foo.h文件中导入“Bar.h”,因为Foo.m导入了Foo.h文件,但这就是我得到错误的地方。在这种情况下,为什么要将它放在.m文件中,而不仅仅是将所有内容都包含在.h文件中,以使文件顶部的内容更清晰?对不起,如果这是一个愚蠢的问题。谢谢。

循环依赖项正是它听起来的样子。你肯定有一个

请这样看:

福需要酒吧,但酒吧需要福

所以,您实例化Foo,它将获得对Bar的引用。这个实例化了Bar,所以它得到了对Foo的引用。这将再次实例化Foo,因此它将获得对Bar的引用。嗯,这个酒吧需要一个Foo,所以它去了,得到了一个Foo的引用

这种情况不断发生,本质上是一个无限循环。为了克服循环依赖,您可以告诉Foo关于Bar的信息

//Foo.h
@class Bar

@interface Foo: NSObject {

}

@end
然后,在Foo.m中导入Bar的标题

//Foo.m
#import "Foo.h"
#import "Bar.h"

@implementation Foo
-(void)barTime {
     Bar bar = [[[Bar alloc] init] autorelease];
     [bar getDrunk];
}

@end

这打破了锁链。Foo只知道Bar,所以只有Bar才能得到Foo。

循环依赖项就是它听起来的样子。你肯定有一个

请这样看:

福需要酒吧,但酒吧需要福

所以,您实例化Foo,它将获得对Bar的引用。这个实例化了Bar,所以它得到了对Foo的引用。这将再次实例化Foo,因此它将获得对Bar的引用。嗯,这个酒吧需要一个Foo,所以它去了,得到了一个Foo的引用

这种情况不断发生,本质上是一个无限循环。为了克服循环依赖,您可以告诉Foo关于Bar的信息

//Foo.h
@class Bar

@interface Foo: NSObject {

}

@end
然后,在Foo.m中导入Bar的标题

//Foo.m
#import "Foo.h"
#import "Bar.h"

@implementation Foo
-(void)barTime {
     Bar bar = [[[Bar alloc] init] autorelease];
     [bar getDrunk];
}

@end
这打破了锁链。Foo只知道Bar,所以只有Bar才能得到Foo。

浏览以下链接并浏览以下链接和