2013-08-07 69 views
0

我需要一種方法來根據NSUserDefaults中的值有條件地定義類的超類。基於#if評估的iOS界面聲明

我知道可以根據#ifdef指令定義不同的接口。我想知道是否可以用#if指令實現相同的功能? 如果不是,還有其他方法可以實現我的目標嗎?

謝謝!

回答

1

你不能用預處理器指令來做這件事,因爲它會在編譯時確定,而NSUserDefaults是你想在運行時檢查的東西。

我覺得這個帖子可以幫到你Dynamically change an object's superclass 無論如何,你確定這是你設計能做到的最好嗎?爲什麼要在運行時根據NSUserDefaults中的內容更改超類?

+0

我目前有兩個不同的實現相同的事情。每個人使用不同的繼承。我希望用戶能夠在兩者之間進行切換,並堅持這一選擇...... –

+1

但我不確定這是否是一種好的模式。通常,不同的繼承意味着完全不同的東西,而特定類的不同子類意味着「某些東西被添加到這個類中,某些東西可能被覆蓋」。你有沒有考慮使用協議或類別,而不是不同的繼承? – Vik

+0

是的,兩個不同的類不是一個選項,因爲這個類是從應用程序中的很多地方訪問的,如果它們中有兩個,我將不得不在所有這些地方調用適當的類。 –