【问题标题】:Does Objective-C allow circular dependencies?Objective-C 是否允许循环依赖?
【发布时间】:2011-07-22 11:31:19
【问题描述】:

我正在用 Objective-C 重写一个 Java 库,我遇到了一个奇怪的情况。我有两个相互导入的类。这是一个循环依赖。 Objective-C 支持这种情况吗?如果没有,你建议我如何重写它?

【问题讨论】:

  • 我已经改写了标题并重新标记了问题。

标签: objective-c circular-dependency


【解决方案1】:

导入类不是继承。 Objective-C 不允许循环继承,但它允许循环依赖。您要做的是使用@class 指令在彼此的头文件中声明类,并让每个类的实现文件导入对方的头文件。也就是说:

ClassA.h

@class ClassB;

@interface ClassA : NSObject {
    ClassB *foo;
}
@end

ClassA.m

#import "ClassB.h"

@implementation ClassA
    // Whatever goes here
@end

ClassB.h

@class ClassA;

@interface ClassB : NSObject {
    ClassA *foo;
}

@end

ClassB.m

#import "ClassA.h"

@implementation ClassB
    // Whatever goes here
@end

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多