objective-c - Objective-C 是否允许循环依赖?

标签 objective-c circular-dependency

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

最佳答案

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

A类.h

@class ClassB;

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

A类.m

#import "ClassB.h"

@implementation ClassA
    // Whatever goes here
@end

B类.h

@class ClassA;

@interface ClassB : NSObject {
    ClassA *foo;
}

@end

B类.m

#import "ClassA.h"

@implementation ClassB
    // Whatever goes here
@end

关于objective-c - Objective-C 是否允许循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425465/

相关文章:

具有 "russian dolls"组件的 Angular 循环依赖

c++ - Makefile,循环依赖被删除,需要澄清

ios - 实现可点击形状的最佳方法?

c++ - 模板继承层次结构中的循环依赖

c++ - C++ 模块中的前向声明 (MSVC)

objective-c - Objective-C 有闭包而 C 没有吗?

compiler-construction - 编译循环依赖是如何工作的?

objective-c - for(;;) 与 for( :) in Objective-C Performance and Practice

iphone - 如何在 UITableViewController 中显示 MSMutableArray 数据?

iphone - 在 Flash 应用程序和 iPhone 应用程序之间共享代码