iphone – 如何在Objective-C类中解决双向依赖问题?

iphone – 如何在Objective-C类中解决双向依赖问题?,第1张

概述好吧,这可能是一个非常愚蠢的初学者问题,但是: 我有一个ClassA,它将从ClassB创建一个子对象并将其分配给一个实例变量.详细说明:ClassA将在指定的初始化程序中分配和初始化ClassB,并将其分配给childObject实例变量.它的标题如下: #import <Foundation/Foundation.h>#import "ClassB.h"@interface ClassA 好吧,这可能是一个非常愚蠢的初学者问题,但是:

我有一个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类中解决双向依赖问题?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存