簡體   English   中英

將應用程序從碳轉移到可可

[英]migrating an application from carbon to cocoa

我正在開發一個應用程序,我需要將它的整個代碼從carbon遷移到cocoa。我在大學時間和實習期間有C,C ++,python和Java編程經驗,但從未接觸過目標C或已完成在此之前為Mac(Carbon和Cocoa)編程。

那么你能否請一些資料來建議我,我該如何進行整個遷移呢?

在對網絡進行研究后,我發現大多數人都建議使用以下書籍

適用於Mac®OSX的Cocoa編程,第三版由Aaron Hillegass編寫

目標C中的編程 - Stephen Kochan

我有這兩本書。

我應該首先閱讀它們然后應該從代碼更改開始嗎? (這兩個方面都需要一些時間)

要么

在對Obj C和Cocoa有一定的了解之后,我應該直接開始代碼遷移嗎?

也,

既然我不知道碳,那么我應該提到學習碳有足夠的知識將碳代碼遷移到可可?

首先,學習Carbon,這樣您就可以閱讀該程序並了解它當前的實現方式。

在Xcode中安裝Legacy文檔集以訪問Carbon指南。 您需要閱讀Carbon概述 ,然后閱讀Carbon 入門 ,然后閱讀“入門”鏈接的所有內容。 你還需要學習Core Foundation,這是Carbon使用的一些更現代的部分; 閱讀Core Foundation Design ConceptsCore Foundation內存管理編程指南

然后,學習Cocoa。

我沒有通過希勒蓋斯的書來學習,但很多人都發誓。 我目前最喜歡的可可書是斯科特史蒂文森的“Cocoa and Objective-C:Up and Running” 我學習Cocoa的方式是使用Apple自己的文檔。 Objective-C編程語言Cocoa基礎指南Cocoa內存管理編程指南開始 最后一篇文章的大部分內容似乎都很熟悉,但沒有任何內容。 從頭到尾閱讀每一個指南並一直閱讀。

一旦學習了Cocoa的一般概念,就可以繼續學習更多特定於應用程序的材料。 應用程序體系結構概述開始,以及該文檔鏈接的大部分內容。 可可指南列表包含完整的指南列表。

在路上,您還需要使應用程序與64位模式兼容。 如果到那時你仍然有任何碳代碼,你需要閱讀64位碳開發者指南 ; 無論哪種方式,您還需要通用的64位轉換指南64位的Cocoa轉換指南

我現在正在研究這個過程,對於使用一些框架的完整的基於文檔的應用程序來說,這是一項相當復雜的工作。 我的Carbon應用程序有許多菜單項,界面使用Carbon Nibs構建,並使用Carbon事件掛鈎實現。 編程語言是C ++。 回顧歷史,最初的Mac經典版本是在C語言中實現的,所以這個時代也有一些遺產。 例如基於資源的PICS!

有幾種方法可以采取,所以這取決於您的具體情況如何進行。 在我的情況下,我決定從一個基於Cocoa文檔的裸項目開始,並開始構建文檔加載代碼,因為它的鈎子已經在空項目中已經存在。 這似乎是一個適合我的好地方,因為它讓我進入了與Cocoa合作的模式,並考慮到小塊的應用程序。

你必須采取一種有條不紊的方法,看看你的應用程序在Carbon中所依賴的內容與應用程序的哪些部分是獨立的 - 例如你的抽象類。 如果您的應用程序使用C ++,那么轉換為純Objective-C可能會有一些陷阱。 例如,運算符覆蓋可能很難注意到。

您可以將C ++與Objective-C混合使用,如Apple的Carbon-Cocoa集成指南中所述 ,在Web上,您可以找到大量用於Cocoa 基礎對象(如NSStrings)的C ++包裝器。 因此,如果您已經擁有包裝CFString的C ++類,這些可以派上用場。

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

如果您正在從一個事件模型轉換到另一個事件模型,或者從基於Carbon端口的映像轉換到Cocoa基於視圖的映像,那么最好先從一個新的Objective-C應用程序開始,然后首先引入您的模型類。 添加一些測試函數以確保它們都在新語言中工作。 如果您的應用程序類似於我的(舊),則可能需要顯示更大的內容,並在界面中進行更多潤色。 這是一個一塊一塊地重建這些零件的好時機。

肯定沒有很好的捷徑。 上面鏈接的PDF是我在該主題上找到的最佳文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM