2011-07-10 59 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