【问题标题】:Dealing with views and recursion处理视图和递归
【发布时间】:2012-02-05 08:48:20
【问题描述】:

这是我的代码

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

现在在 A 类我得到错误

Unknown type name classB;

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

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    #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
    

    类B.m:

    #import "classB.h";
    #import "classA.h";
    
    @implementation classB 
    /* */
    @end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2015-05-20
      • 2014-05-23
      • 1970-01-01
      • 2022-01-26
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多