【问题标题】:migrating an application from carbon to cocoa将应用程序从碳迁移到可可
【发布时间】:2011-04-24 16:51:55
【问题描述】:

我正在开发一个应用程序,我需要将它的整个代码从 carbon 迁移到 cocoa。我在大学期间和实习期间有 C、C++、python 和 Java 编程经验,但从未接触过目标 C或在此之前为 Mac(Carbon 和 Cocoa)做过任何编程。

那么您能否建议我一些开始的资源,以及我应该如何进行整个迁移?

在网上查了一下,发现大部分人都建议看书

Aaron Hillegass 为 Mac® OS X 第三版编写的 Cocoa 编程

Objective C 编程 - Stephen Kochan

这两本书我都有。

我应该先阅读它们,然后再从代码更改开始? (阅读这两个都需要一些时间)

在熟悉了 Obj C 和 Cocoa 之后,是否应该直接开始代码迁移?

还有,

既然我不懂碳,那我应该指什么学习碳才能有足够的知识将碳代码迁移到可可?

【问题讨论】:

    标签: objective-c cocoa macos macos-carbon


    【解决方案1】:

    我自己现在正在处理这个过程,对于使用几个框架的完整的基于文档的应用程序来说,这是一项相当复杂的工作。 My Carbon 应用程序有几十个菜单项,界面是用 Carbon Nibs 构建的,并使用 Carbon 事件钩子实现。编程语言是 C++。回顾历史,最初的 Mac 经典版本是用纯 C 语言实现的,所以那个时代也有一点遗产。例如基于资源的 PICS!

    可以采取多种方法,因此取决于您的具体情况如何进行。在我的例子中,我决定从一个基于 Cocoa 文档的裸项目开始,并开始构建文档加载代码,因为空项目中已经存在相应的钩子。对我来说,这似乎是一个不错的起点,因为它让我进入了使用 Cocoa 的模式,并从小块的角度思考应用程序。

    您确实必须采取一种有条不紊的方法,并查看您的应用在 Carbon 中所依赖的内容以及应用的哪些部分是独立的——例如您的抽象类。如果您的应用程序使用 C++,那么在转换为纯 Objective-C 时可能会遇到一些陷阱。例如,运算符覆盖可能很难引起注意。

    您可以将 C++ 与 Objective-C 混合使用,如 Apple 的 Carbon-Cocoa Integration Guide 中所述,在网络上您可以找到大量用于 Cocoa 的 C++ 包装器 foundation objects like NSStrings。因此,如果您已经有包装 CFString 的 C++ 类,这些可以派上用场。

    一般来说,您可以保持数据存储不变。如果您使用 malloc() 和 calloc() 来制作结构的链表,则没有特殊的理由移至 NSArray。你不会得到更好的表现。真正的变化在于接口,即您从其他对象调用和访问该数据的方式。如果您决定在同一个应用程序中混合 C++ 和 Objective-C 对象,它有助于尽可能多地封装。也就是说,尽可能使您的抽象 C++ 类只引用它们自己的数据和其他 C++ 对象的数据。最终,这将使它们更容易过渡到 Objective-C。

    如果您要从一个事件模型转换到另一个事件模型,或者从基于 Carbon 端口的成像转换到 Cocoa 的基于视图的成像,最好从一个新的 Objective-C 应用程序开始并首先引入您的模型类。添加一些测试函数以确保它们都在新语言中工作。如果您的应用程序与我的(旧)应用程序相似,那么它可能需要显示一些更大的内容,并在界面中进行更多润色。现在是逐步重建这些部分的好时机。

    绝对没有什么捷径可走。上面链接的 PDF 是我找到的关于该主题的最佳文档。

    【讨论】:

      【解决方案2】:

      首先,学习 Carbon,这样您就可以阅读该程序并了解它目前是如何实现的。

      在 Xcode 中安装 Legacy 文档集以访问 Carbon 指南。您需要阅读Carbon Overview,然后是Getting Started with Carbon,然后是入门链接的所有内容。您还需要学习 Core Foundation,它是 Carbon 的一些更现代的部分所使用的;阅读Core Foundation Design ConceptsMemory Management Programming Guide for Core Foundation

      然后,学习 Cocoa。

      我没有通过 Hillegass 的书学习,但很多人都对它发誓。我目前最喜欢的可可书是“Cocoa and Objective-C: Up and Running” by Scott Stevenson。我学习 Cocoa 的方式是使用 Apple 自己的文档。以The Objective-C Programming LanguageCocoa Fundamentals GuideMemory Management Programming Guide for Cocoa 开头。上一个文档的大部分内容看起来很熟悉,但什么都不跳过。从头到尾阅读所有这些指南。

      一旦您了解了 Cocoa 的一般概念,您就可以继续学习更多特定于应用程序的材料。从Application Architecture Overview 和该文档链接的大部分内容开始。 Cocoa Guides list 有完整的指南列表。

      今后,您还需要使应用程序与 64 位模式兼容。如果到那时你还有任何 Carbon 代码,你需要阅读64-bit Guide for Carbon Developers;无论哪种方式,您还需要通用 64-bit Transition Guide64-bit Transition Guide for Cocoa

      【讨论】:

        猜你喜欢
        • 2015-08-10
        • 1970-01-01
        • 2017-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 2021-11-16
        相关资源
        最近更新 更多