2010-07-09 94 views
0

我已經爲iPhone編寫了幾個應用程序,但它們都是以我認爲是懶惰的非結構化方式編寫的。將iPhone的Objective-C代碼拆分爲多個文件

我已經開始一個新項目並創建了幾個Objective-C類(NSObject的子類)。我的問題是讓我的頭腦裏的邏輯正確。我的結構如下

viewController.h 
viewController.m 
plotPoints.h 
plotPoints.m 
handleFeeds.h 
handleFeeds.m 

所以主文件是視圖控制器,我在其頭文件中包含其他類。我的問題是,在其他類文件中,例如plotPoints.m - 如果我嘗試引用在視圖控制器中設置的變量,則說它沒有設置。我已經在plotPoints.h文件中包含了viewcontroller - 但它仍然不起作用。

以這種方式分離代碼的最佳做法是什麼?在這個例子中,我有一個我想在一個類中處理的webservice提要,然後在另一個類中處理這些結果並處理視圖控制器中的主UI。

感謝您的任何信息。

+0

你可以減少你的代碼到一個不起作用的簡短例子嗎?有許多選項,比如全局變量,委託,聲明外部變量......作爲一個附註,我建議文件名以大寫字母開頭,就像類名一樣。 – Eiko 2010-07-09 10:25:36

+0

嗯...沒有太多的代碼。我會看看是否有任何我可以發佈。我的班級文件實際上是大寫的,重新輸入時我只是懶惰! – 2010-07-09 10:47:49

回答

0

我說你的控制器不應該被引用 - 據我所知 - 外部類(plotPointshandleFeeds,順便說一下這些應該肯定以大寫字母開頭)。

實際上,它應該是完全相反的,你的viewController應該使用你的外部類的方法和屬性。 PlotPointsHandleFeeds不應該引用您的Controller的實例變量,而是讓它將它們作爲參數傳遞給您的方法。

+0

所以在我的視圖控制器中,我應該包含外部類。這些類包含我從視圖控制器調用的函數。所以如果我在視圖控制器中有一個mapview,我應該在哪裏聲明iboutlet?目前我在viewcontroller.h文件中。我試圖在plotpoints.h中聲明它,但我在界面構建器中看不到它。感謝您的回覆。 – 2010-07-09 10:46:47

+0

我明白了。 也許你可以嘗試在另一個類中添加一個IBOutlet到你的mapview中,但是如果你這樣做了,你可能需要在你的.xib中添加一個你的助手類的實例(通過從「YourFile.xib」 「窗口)。 然後,你將不得不在你的ViewController中添加一個插口到你的助手類。這足夠清楚了嗎? – scalbatty 2010-07-09 12:27:55