2011-03-24 141 views
0

基本上我有一個類的負載都是UIView的所有子視圖。動態包含類或實例化對象,不包括類

該應用程序是(某種)幻燈片應用程序。我希望能夠列出幻燈片可能拍攝的潛在「路線」。

因此,我可能有100多個班級,我不想將他們全部包含在我可能使用其中一次的潛力中。

那麼有沒有辦法解決這個問題?我可以實例化一個類而不用包含它嗎?

或者我將不得不包括我將要使用的每個潛在課程?

是否有「全球包括」像include all ......在這裏抓着吸管。 :P

感謝 湯姆

+2

* 100s的課程*讓我懷疑你有好的課程設計 – vikingosegundo 2011-03-24 18:53:23

+0

借調。您提到有「幻燈片可能採用的潛在路線列表」 - 您是否說每條路線都是單獨的Objective-C課程?如果是這樣,這是一個嚴重破碎的設計恕我直言。 – 2011-03-24 21:29:45

+0

100s是多報! :p但校長相同。問題是每個「幻燈片」都將具有自定義功能。所以人們可能會有一個條形圖,它可以顯示向上長長的條形圖並顯示其值,另一個可能會播放視頻,另一個可能會有一個「電子表格」來計算特定產品的銷售量。等等等等你會怎麼做呢?試圖將所有這一切擠到一個班級將是可怕的! (並且在未來很難改變)。 – 2011-03-25 09:10:46

回答

3

爲什麼你會有數百個課程?這聽起來像你有大約一個自定義類,這將代表一張幻燈片。

對這個問題發表您的看法有幫助。考慮將幻燈片與其內容分離。您可以擁有一個幻燈片類,它提供了所有幻燈片的通用功能,包括管理一個或多個內容對象的功能。然後你會創建一堆不同的內容類:電子表格,動畫圖表,清單,不管。幻燈片會查看其數據以確定要實例化哪個內容類。

如果您有一個適用於所有內容類的公共基類,則幻燈片類只需要知道基類。內容基類可以充當所有內容類的管理器。你可以給它一個像-contentForData:(NSData*)data這樣的工廠方法,它返回給定數據的適當內容對象。幻燈片類不需要知道任何比內容基類更多的東西,因此這種類型的實現您的內容類的目標不需要在幻燈片類中包含所有的頭文件。當然,內容基類仍然需要知道所有的內容類。

它有點棘手,基類需要知道它的子類,但是子類是從基類派生的。我想你可以通過在content子類中使用forward @class聲明來解決這個問題。

+0

兩個班 - 一個代表幻燈片,一個代表幻燈片。絕對不是數百! :-) – 2011-03-24 21:30:36

+0

對。我認爲每條路線可能只是一組幻燈片,但很難說可用的規格,因此「粗略」。 ;-) – Caleb 2011-03-25 00:24:44

+0

是的,我有這張幻燈片,但現在我需要在每張幻燈片中放入自定義結構。你會怎麼做呢?我認爲創建單獨的UIView幻燈片將是一個好主意?否則,我將不得不創建一個每個可能的幻燈片都有可能發生的可能性的類,這同樣也是很多代碼的寫法,但都在一個螢幕幻燈片上課,並且我認爲oop的全部目的不是爲了做到這一點。 :p – 2011-03-25 09:14:28

0

我可以實例化,而不包括它在某種程度上類?

我想這是不可能的,因爲編譯器一定要看到當前範圍class定義使用class類型的變量之前。

1

如果您正在使用該類,則必須知道它響應的是哪組消息。將這些信息分解成一個通用的超類或協議,然後你只需要使用它。

0

如果我正確理解您的問題,您希望單個地方放置#include指令,以便項目中的每個類都可以訪問它們。您可以在ProjectName_Prefix.pch文件中執行此操作。任何#include或#import語句都將包含在每個源代碼文件中。

+0

一種,哈哈。這是一個很好的答案,我之前沒有意識到這一點,謝謝。 :)但是,它不是我要找的。我希望能夠動態地只包含代表我的列表中的滑塊集的類,就像它一樣。 :) – 2011-03-25 09:18:58