2010-10-13 189 views
4

我正在研究一個應用程序,我需要將它的整個代碼從碳轉移到可可。我在大學時間裏有C,C++,python和Java編程的經驗,實習,但從未觸及客觀的C或在此之前爲Mac(碳和可可)做過任何編程。將應用程序從碳移植到可可

所以,你可以請我建議一些資料來源,也應該怎麼去整個遷移?

淨經過研究,我發現,大多數人都建議以下書籍

可可編程適用於Mac®OS X,第三版目標C艾倫·希爾加斯

編程斯蒂芬 - 科昌

我有這兩本書。

我應該先閱讀它們,然後應該從代碼更改開始? (這將需要一些時間來閱讀這兩種)

或與的OBJ C和可可,一個體面的fimiliarity我應該直接上手代碼遷移後

此外,

,因爲我不知道碳,我應該參考學習碳有足夠的知識,以碳代碼遷移到可可?

回答

10

首先,學習Carbon,這樣你就可以閱讀程序並理解它是如何實現的。

在Xcode中安裝Legacy文檔集以訪問Carbon指南。您需要先閱讀Carbon Overview,然後再閱讀Getting Started with Carbon,然後閱讀入門指南鏈接的所有內容。你還需要學習Core Foundation,它是Carbon使用的一些更現代的部分;閱讀Core Foundation Design ConceptsMemory Management Programming Guide for Core Foundation

然後,學習可可。

我沒有通過Hillegass的書學習,但很多人發誓。我目前最喜歡的可可書是「Cocoa and Objective-C: Up and Running」 by Scott Stevenson。我學習Cocoa的方式是使用Apple自己的文檔。從The Objective-C Programming Language,Cocoa Fundamentals GuideMemory Management Programming Guide for Cocoa開始。最後一份文件中的大部分看起來都非常熟悉,但是不會跳過任何內容。從頭到尾閱讀每一篇指南,並一路完成。

一旦你瞭解了Cocoa的一般概念,你可以繼續閱讀更多特定於應用的材料。從Application Architecture Overview開始,以及該文檔鏈接的大部分內容。 Cocoa Guides list有指南的完整列表。

在這條路上,您還需要使應用程序與64位模式兼容。如果到那時您仍然有任何碳代碼,您需要閱讀64-bit Guide for Carbon Developers;無論如何,您還需要一般的64-bit Transition Guide64-bit Transition Guide for Cocoa

0

我現在正在處理這個過程,對於使用一些框架的完整的基於文檔的應用程序來說,這是一個相當複雜的任務。我的碳應用程序有幾十個菜單項,界面是用碳筆尖構建的,並使用Carbon事件掛鉤實現。編程語言是C++。回顧歷史,最初的Mac經典版本是以直C的方式實施的,所以這個時代也有一些遺產。例如,基於資源的PICS!

有幾種方法可以採取,所以它取決於你的具體情況如何進行。在我的情況下,我決定從一個純粹的基於Cocoa文檔的項目開始,並開始構建文檔加載代碼,因爲在空項目中已經存在鉤子。這對我來說似乎是一個很好的起點,因爲它讓我進入了與Cocoa一起工作的模式,並以更小的片斷思考應用程序。

你真的必須採取有條不紊的方法,看看你的應用程序依賴於碳與你的應用程序的哪些部分是獨立的 - 例如你的抽象類。如果您的應用程序使用C++,則轉換爲純Objective-C可能會存在一些缺陷。例如,操作員覆蓋可能很難注意到。

您可以將C++與Objective-C混合使用,如Apple的Carbon-Cocoa Integration Guide中所述,並且可以在網頁上找到Cocoa foundation objects like NSStrings的大量C++包裝器。所以如果你已經有了包裝CFString的C++類,這些可以派上用場。

一般來說,您可以保留原樣的數據存儲空間。如果你使用malloc()和calloc()來創建一個結構鏈表,沒有特別的理由轉移到NSArray。你不會得到更好的表現。真正的變化出現在界面中,您調用的方式以及從其他對象訪問數據的方式。如果您決定在同一個應用程序中混合C++和Objective-C對象,它將盡可能地封裝。也就是說,儘可能地讓你的抽象C++類只引用他們自己的數據和其他C++對象的數據。最終這將使它們更容易轉換到Objective-C。

如果您正在從一個事件模型轉換到另一個事件模型,或者從基於碳端口的圖像轉換到Cocoa的基於視圖的圖像,最好從新的Objective-C應用程序開始,並首先引導您的模型類。添加一些測試功能以確保它們都以新語言工作。如果你的應用程序與我的(舊)類似,那麼它可能需要顯示一些更大的東西,並在界面中有更多的優化。現在是逐件重建這些零件的好時機。

絕對沒有很好的捷徑。上面鏈接的PDF是我在這個主題上找到的最好的文檔。

相關問題