2011-07-10 54 views
1

我知道我以前做过这个,但我不记得如何去做。从另一个类获取整数值

我有一个整数,我希望能够在另一个类的我的变化。

我该怎么做?

MainViewClass : UIViewController { 
int score; 
} 


#import "MainViewClass.h" 
OtherClass : MainViewClass{ 

} 

然后在OtherClass的.m中,我希望能够使用变量分数。

我怎么做到这一点?

我在互联网上搜索过,并尝试了几件事情,试图让它工作将没有成功。

感谢您的期待! 祝您有美好的一天。

回答

5

在你的MainViewClass.h中,你会想要添加你的int作为该类的一个属性。

@property (nonatomic, readwrite) int score; 

然后在你的MainViewClass.m,你要使用合成属性:

@synthesize score; 

现在既然在你OtherClass您可以访问它的子类的使用MainViewClass以下的某种组合性质。

在你OtherClass.h添加

MainViewClass * mainViewClass;

在您的OtherClass.m中,无论您需要访问分数,您都应该能够访问它。

mainViewClass = (MainViewClass *) self.parent; 

,然后使用得分,

mainViewClass.score; 
2

您使用整数在类中创建getter和setter方法(或具有合成访问器的属性),为其他类提供对第一个类的某个实例的引用,并让它使用这些访问器来获取和设置整数。

+0

+1适当的面向对象的设计模式 –

4

在您的例子,int score实例变量,或的ivar的简称。这是与任何给定的MainViewClass实例关联的一段数据。默认情况下,出于很好的原因,实例变量具有@protected可见性,这意味着只有MainViewClass及其子类可以访问它。现在

,你在你的例子做OtherClass一个的MainViewClass子类,这意味着从访问score相同的对象您只需要键入scoreself->score,并从另一个对象,它是一个MainViewClass你只需要键入theOtherObject->score。 (这种设计公开了实现细节,所以通常被许多编码人员认为是不好的设计,但对于这样一个简单的用例,你可能会逃脱它。对于十年,超出了这个问题的范围。)

+0

谢谢!完美的作品。 – Jacob