处理视图和递归

时间:2012-02-05 08:48:20

标签: objective-c ios

这是我的代码

classA.h

#import classB.h

@interface classA : UIViewController
{
  classB *classb;
}

@property (nonatimic, retain) classB *classb;
@end

classA.m

@implementation classA
@synthesize classb = _classb;

-(void)someMethod
{
  self.classb = [[classb alloc]initWithNibName:@"classb" bundle:nil];
  [self.view.superview addSubview:self.classb.view]; 
  [self.view removeFromSuperview];

}
@end

该代码运作良好。 classb视图正常加载。问题从这里开始

classB.h

#import classA.h

    @interface classB: UIViewController
    {
       classA *classa;
    }
    @property (nonatimic, retain) classA *classa;
    @end

现在在classA中我收到错误

Unknown type name classB;

我认为问题是某种递归。 想法是classA加载classB视图,在某些点classB中从superview中删除self并将classA添加为视图

1 个答案:

答案 0 :(得分:2)

#import classA.hclassB.h移至classB.m并将@class classA添加到classB的头文件中

如果仅在@interface中使用类(即,您不使用该类标头中定义的@protocol),则使用@class SomeClass语句就足够了。

这将阻止循环包含。


classB.h:

@class classA;

@interface classB: UIViewController
{
   classA *classa;
}
@property (nonatomic, retain) classA *classa;

@end

classB.m:

#import "classB.h";
#import "classA.h";

@implementation classB 
/* */
@end