2012-01-27 81 views
1

在我的情況中,UIViewController B是UIViewController A的子類。由於B是從A繼承的(即A是B的父親),因此B肯定可以訪問A中的所有方法和變量。iOS中的子類問題

但是,A需要一個來自B的變量。有沒有可能這樣做?

謝謝。

+0

@class ...... ???? – 2012-01-27 09:53:23

+0

您是否在討論在運行時訪問實際變量值?如果是這樣,有幾個選擇,例如通知,將數據保存到nsuserdefaults等。 – ader 2012-01-27 09:54:52

+0

我希望A(父)可以訪問由運行時由B(子)設置的實例變量。如何設計和編碼? – user403015 2012-01-27 09:57:33

回答

0

其實,如果你需要這種類型的關係 - 你的設計是錯誤的。我的意思是 - 在你的情況下你不需要繼承關係,但是像聚合或合成。例如,您的關係類型打破了Liskov替代原則。

但是。目標C接受反向關係。您可以使用委託(@protocol)來描述可以從接受此@protocol的未知對象中檢索某些數據的接口。

因此,在你的情況下,B類應該符合提供對B的某些屬性的訪問的協議.A應該能夠使用該協議,即知道A需要的獲取者。

0

在子類A中添加該變量作爲默認值。然後它在子類B中也可用?

如果這是你不想要的東西,那麼我想你的設計有什麼問題?

+0

我想要的是A(父)需要訪問在運行時由B(子)設置的實例變量。 – user403015 2012-01-27 09:58:36

0

如果在子類中聲明的實例變量有一個getter方法,那麼超類中的任何方法總是可以詢問它的類的對象是否爲respondsToSelector:對於該getter方法,如果是,則調用它以獲取實例變量。

+0

謝謝。你能告訴我一些你想法的示例代碼嗎?這對我很有幫助。 – user403015 2012-01-27 10:25:01