我有一个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时,删除ClassA * parentObject实例变量并删除指定初始值设定项(需要ClassA引用),然后它可以工作.
现在,这是我想要实现的(如果这很重要):我需要在UIScrollVIEw中有一些非常特殊和复杂的行为.所以我决定将其子类化.因为主要部分将在委托方法中完成,所以我决定为我的UIScrollVIEw子类创建一个“泛型”委托对象.然后,我的UIScrollVIEw子类自动创建该特殊委托对象并将其分配给其delegate属性.委托对象本身需要引用它的父级,即自定义的UIScrollVIEw,以便它可以访问该滚动视图的子视图.但无论如何,即使有更好的方法来解决这个问题,我仍然想知道如何通过两个需要相互依赖的“相互依赖”对象来实现这一目标.
欢迎任何建议!
解决方法 您不需要在头文件中导入这些类.在头文件中使用@class,然后仅在.m文件中使用#import:// ClassA.h:@class ClassB;@interface ClassA : NSObject{ ClassB *childobject;}@end
// ClassA.m:#import "ClassA.h"#import "ClassB.h"@implementation ClassA//..@end
// ClassB.h@class ClassA;@interface ClassB : NSObject{ ClassA *parentObject;}- (ID)initWithClassA:(ClassA*)newParentObject;@end
// ClassB.m:#import "ClassB.h"#import "ClassA.h"@implementation ClassB//..@end总结
以上是内存溢出为你收集整理的iphone – 如何在Objective-C类中解决双向依赖问题?全部内容,希望文章能够帮你解决iphone – 如何在Objective-C类中解决双向依赖问题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)