2011-01-22 78 views
7

我將很快開始中型iOS項目,一個以文檔爲中心的應用程序。跨平臺iOS/Mac OS X Objective-C開發?

稍後,該軟件可能會移植到Mac OS X.當然,整個UI將需要更改;這不是我要問的。

是否有可能以跨平臺(僅適用於Mac/iOS)或更容易移植的方式編寫核心邏輯?以前有人做過這個,或者只是爲兩個平臺編寫不同代碼的常用方法?

我很感激任何關於此的提示,無論是關於代碼,框架,版本控制 - 任何事情。我不願意意識到我只是在事實發生後才把自己塗在角落,所以我想盡可能地開始。

+0

看到這個帖子:http://stackoverflow.com/questions/1939/how-to-articles-for-iphone-development-objective-c – 2011-01-22 12:18:53

+4

@Dave Everitt你有沒有*讀過*的問題 - 完全關閉-話題。 – 2011-01-22 12:20:05

回答

9

第一步是堅持MVC模式。正如您所說,視圖通常需要在iOS和OS X之間重寫,但模型層和控制器的某些部分可以重用。

基礎(NSArray等)和核心數據在iOS和OS X之間共享,所以編寫管理模型層的通用Objective-C代碼(如將數據保存到磁盤),檢索他們從網絡等。

一個重要的一點是,要避免寫一個長期的代碼段的衝動,主要處理視圖控制器中的模型層。這個冗長的代碼段可以被抽象爲一個單獨作用於模型層的方法;那麼您可以稍後在OS X應用程序中重用該代碼。

例如,假設我創建了一個管理所顯示文檔的視圖控制器。然後,在與編輯操作對應的視圖控制器中定義的操作方法中,我可能會編寫一個代碼,直接深入模型層的細節並執行編輯操作。然後,當視圖控制器移植到窗口控制器(或NSDocument子類)時,我需要對源代碼執行一個相當大的更改。相反,我會爲文檔對象本身內的特定編輯操作實現一種方法,以便我可以從iOS應用中的視圖控制器和OS X應用中的窗口控制器調用該方法。

+0

嗨,你能分享一些鏈接或者有關主題的示例代碼嗎? ) – 2014-11-28 13:54:44

2

,你可以只寫在C,然後將其移植到IOS,OSX,JAVA,Android的,...

+1

我已經完成了與我的一個應用程序的模型(的MVC)部分。 Plain C在Mac Classic,OS X,iOS,Android下的NDK,PalmOS,webOS上的PDK,Linux上的命令行等內部的UI封裝器中運行。 – hotpaw2 2011-01-23 03:19:36

3

您創建的,在主,在兩個工作的任何純邏輯和「模式」級班iOS和Mac OS X,只要您堅持兩種系統通用的Cocoa類和SQLite/Core Data等方法。也就是說,iOS文件系統是沙盒式的,這不是對OS X的限制,這也是你需要在「以文檔爲中心」的應用程序中處理的事情。

但是,當您聲明UI級別類在兩個系統上完全不同時,iOS使用各種UIKit類與OS X上的各種NS類相比較。因此,您不太可能共享在那個水平上。

就共享兩個項目之間的代碼而言,您可以創建低級別對象等的「公共」項目,在iOS和Mac OS X項目中添加並將其作爲參考,雖然這可能會結束如果事情發生分歧(我懷疑他們可能)會證明有些痛苦。無論如何,Clint Harris有一篇很好的博客文章,名爲「Easy, Modular Code Sharing Across iPhone Apps: Static Libraries and Cross-Project Reference」,值得一讀,儘管它主要關注iOS的一面。

2

對此我不太瞭解,其他人可能知道的更多,但是如果您想將項目從iOS移植到Mac,那麼UMEKit可能會幫助您...