Objective c 在创建当前类的类中调用方法?
这一个更难解释:我有Objective c 在创建当前类的类中调用方法?,objective-c,ios,class,methods,parent-child,Objective C,Ios,Class,Methods,Parent Child,这一个更难解释:我有ClassA,它有MethodA,它对ClassA中的一些对象执行一些操作,假设它设置了几个标签 ClassA还创建了ClassB的一个实例,它是一个侧栏视图。我需要ClassB对ClassA中的对象执行与MethodA相同的操作,更新ClassA实例中的标签 我需要ClassB能够调用MethodA,但是让它作用于创建ClassB实例的ClassA的特定实例 这些类(至少目前)并不相互继承,因为它们实际上还没有共享任何东西。我将ClassA中的一些数据填充到ClassB的标
ClassA
,它有MethodA
,它对ClassA
中的一些对象执行一些操作,假设它设置了几个标签
ClassA还创建了ClassB
的一个实例,它是一个侧栏视图。我需要ClassB对ClassA中的对象执行与MethodA相同的操作,更新ClassA实例中的标签
我需要ClassB能够调用MethodA,但是让它作用于创建ClassB实例的ClassA的特定实例
这些类(至少目前)并不相互继承,因为它们实际上还没有共享任何东西。我将ClassA中的一些数据填充到ClassB的标签中,现在我需要做相反的事情
我不能从类B中调用[super MethodA]
,因为它们不继承。我需要的是类似于[parent methodA]
的东西,它将在创建此ClassB对象的类中调用该方法,并使其作用于ClassA的特定实例
这样的事情存在吗?道歉,乱七八糟的帖子,我不知道该怎么搜索这样一个模糊的问题。你需要自己创建这个。一般模式是在子类中创建侦听器分配,“父类”(更一般地说,是希望接收通知的对象)调用您建立的方法来分配侦听器。如果愿意,您可以允许您的孩子维护多个侦听器,或者只维护一个侦听器。侦听器应该实现一些适合于您计划如何传递数据的协议。否,如果您使用的是组合,那么您需要一种外部方式来引用包含客户端的类 更简单的方法是在实例化对象时传递父对象:
@interface ClassB {
ClassA *parent;
}
-(id)initWithA:(ClassA*)parent;
@property (readonly, retain) ClassA *parent;
@end
@implementation ClassB
-(id)initWithA:(ClassA*)parent {
if ((self = [super init])) {
self.parent = parent;
}
return self;
}
@end
这样您就可以在ClassB
中:
-(void)method {
[parent updateThings:params];
}
请注意,在这种情况下,由于两个类声明都是交叉引用的,因此您需要在头文件中使用前向声明(例如,
@class ClassA
)才能使其编译。如果ClassA对ClassB对象具有强引用,那么ClassB将需要对其父类a对象的弱引用