39

从我现有的 C# 专业知识转移到使用 Objective C 为 iPad/iPhone 构建应用程序有多难?

4

5 回答 5

100

语言跳转没问题。一旦你克服了[和的最初冲击]。但是,库和框架的冲击将是巨大的。

与 .Net 框架相比,Cocoa 和 Touch 框架要轻得多,所以至少你可以看到好的一面,你需要学习的东西更少。但它们的底层理念、布局和历史演进路径与 C#/.Net 框架有很大不同。无论这将是容易还是困难,都很难理解。一些个人意见:

  • 构建 UI 的 Cocoa 方式比.Net 框架今天拥有的任何东西、Forms 或 WPF 都要早几年一开始很难掌握,但如果你理解它,它会很有意义。它是一个很好的基于 Smalltalk 框架的模型-视图-控制器,自然会引导您走上设计 UI 的正确道路。
  • 来自 .Net 背景的图形、视频、媒体会让人感觉像是来自另一个星球。但是,尽管它们看起来很神秘,可可祭品却非常强大,尽管水平不高。
  • 动画将是一个巨大的松了一口气。Cocoa 动画非常易于使用,在 .Net 中没有任何等价物
  • 如果您使用 openGL 而不是 Cocoa 原生图形,那么 openGL 和 openGL 在任何平台上的风格几乎相同。
  • 可可方面的网络编程较差。你有一些基本的支持,并且必须承认至少 API 的设计很难做愚蠢的事情(它迫使你使用异步编程,所以不再有每个客户端一个线程的废话),但我我敢打赌你会错过 .Net 糖类实用程序(WebRequest、WebClient 等)
  • XML 解析。可可支持只是简单的原始。至少,XML 解析是事件驱动的,因此会引导您开发更好的程序,但组合起来很复杂。
  • 数据库。将是一个不同的世界。您可以选择使用原始 SQLite 或 Core Data。核心数据更好恕我直言。是一种高级 ORM 和活动记录类型的东西,底层存储的所有复杂性都被抽象掉了。易于使用且功能强大,只要您要求它做它知道该怎么做的事情。强迫它做一些它不知道该怎么做的事情是令人难以置信的麻烦。最终,对于任何 ORM 都是如此。您将错过 LINQ,并且您将不得不忘记 SQL。它的要点是 .Net 的 DB 编程经验并没有转移到 Core Data 世界。原始 SQLite 的替代方案看起来更熟悉,但级别非常低,感觉更像是编程 1990 ODBC 而不是 2010 .Net。
  • 键值编码编程。这个概念没有直接的 .Net 等价物。这听起来像是某种简单的字典,但实际上功能更强大。它与 [Objective-C] 的 Objective 部分的运行时引擎交织在一起,并产生了一些巧妙的技巧。你需要了解 Key-Value 编码才能有效地使用 Core Animation 或 Core Data。您可以将其视为对类固醇的反思。它可以实现一些与 Linq-to-Objects 相同的技巧,但不会像 Linq 那样优雅。
  • 是 C++。Objective-C 是 C++ 的超集,并得到了最近发布的 gcc 的支持,因此您可以随时回退到 C++。STL、仿函数、模板元编程,它们都可以工作。您可以在同一个应用程序中混合和匹配纯 Cocoa 和 Core Objective-C 与 C++。您将无法像将 Objective-C 类作为 C++ 类一样进行继承,但您将能够在 C++ 类和 Objective-C 对象之间进行通信。不确定boostLoki支持的当前状态是什么。

Cocoa 中覆盖不佳的许多领域都有各种 3rd 方库,但我无法比较所有 Cocoa 3rd 方与 .Net 3r 方,我有生活......

总的来说,我会总结一下,因为在 Objective-C 中,入口栏更高。带个脑袋。

于 2010-04-14T21:59:20.127 回答
31

除了 Remus 的出色回答之外,您还需要了解并能够实现内存管理。如果您是在 Java 或 .NET 上长大的,那么这对您来说可能是陌生的。密切关注教程这一部分,并通过故意搞砸来练习。您需要知道这些错误是什么样的以及它们的行为方式。

祝你好运!

于 2010-04-14T22:10:31.087 回答
6

这是一个相当大的跳跃,但你可以在几天内学到足够的东西来加快速度。

一旦您了解了 Objective C 语法和约定,您将不得不深入研究 Cocoa 库和框架,这些库和框架非常重要。

我会推荐一本关于 Objective C 或 iPhone 开发的书,或者浏览http://developer.apple.com网站上的所有教程。

开始后,请查看此站点以获取应用程序的良好代码示例:http: //appsamuck.com

于 2010-04-14T21:34:45.903 回答
2

我想如果你知道 OOP 你会没事的。虽然合成器不像大多数编程语言那样常见,例如

object.function(var arg1)

好像

[对象函数[var:arg1]]

如果我没记错的话。

如果你有 Apple Dev ID 和 iTunes,你可以去http://developer.apple.com/iphone/index.action然后去入门视频(之后它应该在某个时候询问你的 Apple Dev ID启动 iTunes)。你有一堆视频。名为“Objective-C 和 Cocoa Touch 简介”的文章是一个很好的开始。

希望有帮助。

于 2010-04-14T21:44:36.270 回答
1

该语言并不难,但我发现开发环境在某些方面不如 VS 流畅。例如,界面构建器是编码环境的一个独特应用程序,导致偶尔出现同步问题,如果您输入了错误的事件名称,编译器不会告诉您。

Having said that the interface builder is gorgeous. You just need to remember to hit the save button before you flip back to the code.

于 2010-04-15T09:05:09.517 回答