好的,这可能是一个非常愚蠢的初学者问题,但是:
我有一个 ClassA,它将从 ClassB 创建一个子对象并将其分配给一个实例变量。详细说明:ClassA 将在指定的初始化程序中分配和初始化 ClassB,并将其分配给 childObject 实例变量。它的标题如下所示:
#import <Foundation/Foundation.h>
#import "ClassB.h"
@interface ClassA : NSObject {
ClassB *childObject;
}
@end
然后是ClassB的头部。ClassB 必须引用 ClassA。
#import <Foundation/Foundation.h>
#import "ClassA.h"
@interface ClassB : NSObject {
ClassA *parentObject;
}
- (id)initWithClassA:(ClassA*)newParentObject;
@end
当 ClassA 对象从 ClassB 创建一个子对象时,ClassA 对象将调用 ClassB 对象的指定初始化器,它必须在其中传递自己(self)。
我觉得有什么问题,但现在我不知道它到底是什么。我认为我知道这是行不通的。他们不能互相导入。编译器只是告诉我:“错误:'ClassA'之前的语法错误”。当我删除用于导入 ClassA 的 import 语句时,删除 ClassA *parentObject 实例变量并删除指定初始化程序(它采用 ClassA 引用),然后它就可以工作了。
现在,这是我想要实现的(如果这很重要):我需要在 UIScrollView 中进行一些非常特殊和复杂的行为。所以我决定对它进行子类化。因为主要部分将在委托方法中完成,所以我决定为我的 UIScrollView 子类创建一个“通用”委托对象。然后,我的 UIScrollView 子类会自动创建该特殊委托对象并将其分配给其委托属性。委托对象本身需要引用它的父对象,即定制的 UIScrollView,以便它可以访问该滚动视图的子视图。但无论如何,即使有更好的方法来解决这个问题,我仍然想知道如何使用两个需要彼此的“相互依赖”的对象来做到这一点。
欢迎任何建议!