IOS:在另一个类中调用一个方法

我有一个类“ClassA”与“MethodA”,我也有一个“ClassB”,我想从“ClassB”调用“methodA”; 我写

@classA; @property(nonatomic, retain) ClassA *classA; //and also @synthesize... 

然后我打电话给方法

 [self.classA method]; 

但它不会调用方法….然后我写在classB中的viewdidload

 self.classA = [[ClassA alloc]init]; 

但是这个东西重置了ClassA中的variables。

我怎样才能解决这种情况?

编辑:我决定重写我的答案,因为我不认为原文措辞良好。

我认为你不明白什么是Objective-C 2.0点符号。 这是令人困惑的,特别是如果你用C或C ++编程,因为它在语法上等同于struct字段或classvariables访问操作符,但在语义上是不同的。

当你使用:

 self.classA = newClassA; 

你实际上是这样做的:

 [self setClassA: newClassA]; 

而当@property classAretain属性定义时,编译器会生成setter方法,如下所示:

 - (void) setClassA:(ClassA *)newClassA { if (classA != newClassA) { [newClassA retain]; [classA release]; classA = newClassA; } } 

在你给的代码中:

 [self.classA method]; 

其实扩展到:

 [self setClassA: method]; 

这不是你想要的。

避免这种混淆的最简单的方法是根本不使用点符号,特别是不在处理variables的分配或取消分配的同一类的实例方法中。

您正在使用alloc和init创build一个ClassA的新实例。 您需要将属性设置为您现有的classA实例,很难build议如何没有更多的上下文,但也许当您创build类b时,

 classB.classA = self; 

这假定A类首先创buildB类。