【问题标题】:Get integer value from another class从另一个类获取整数值
【发布时间】:2011-10-02 02:44:06
【问题描述】:
我知道我以前做过这个,但我就是不记得怎么做。
我有一个整数,我希望能够在我的另一个班级中进行更改。
我该怎么做?
MainViewClass : UIViewController {
int score;
}
#import "MainViewClass.h"
OtherClass : MainViewClass{
}
然后在 OtherClass 的 .m 中,我希望能够使用变量 score。
我该怎么做?
我在互联网上进行了搜索,并尝试了几种方法以使其正常工作。
感谢收看!
有一个美好的一天。
【问题讨论】:
标签:
objective-c
ios
inheritance
integer
【解决方案1】:
在 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】:
在您的示例中,int score 是一个 实例变量,或简称为 ivar。它是与MainViewClass 的任何给定实例相关联的一段数据。默认情况下,实例变量具有 @protected 可见性,这意味着只有 MainViewClass 及其子类可以访问它。
现在,您在示例中将OtherClass 设为MainViewClass 的子类,这意味着您只需键入score 或self->score 从同一个对象 访问score,从另一个 MainViewClass 对象,您只需键入 theOtherObject->score。 (这种设计暴露了实现细节,因此通常被许多编码人员认为是糟糕的设计,但对于像这样的简单用例,您可能可以侥幸逃脱。为什么 em> 这很糟糕,这个讨论已经持续了几十年,超出了这个问题的范围。)
【解决方案3】:
您在具有整数的类中创建 getter 和 setter 方法(或具有合成访问器的属性),为另一个类提供对第一个类的某个实例的引用,并让它使用这些访问器来获取和设置整数.