代码之家  ›  专栏  ›  技术社区  ›  Keith Adler

从“C”跳到“目标C”有多大?

  •  40
  • Keith Adler  · 技术社区  · 15 年前

    从我在C领域的现有专业知识转移到目标C中为iPad/iPhone构建应用程序有多困难?

    5 回复  |  直到 15 年前
        1
  •  100
  •   Tim Cooper    15 年前

    语言跳跃正常。一旦你克服了最初的震惊 [ ] . 然而,图书馆和框架的冲击将是巨大的。

    与.NET框架相比,cocoa和touch框架要轻得多,因此至少你可以看到光明的一面,你没有什么可学的。但它们的基本理念、布局和历史演进路径是 非常 不同于C/.NET框架。无论这是容易还是困难,都很难理解。一些个人意见:

    • 构建用户界面的Cocoa方式比 任何东西 .NET Framework有Today、Forms或WPF。一开始很难掌握,但是如果你摸索它,它会很有意义。很好,奥立 Model-View-Controller 基于Smalltalk框架,自然会引导您 正确的 设计用户界面的路径。
    • 当图形、视频和媒体来自.NET背景时,它们将感觉像来自另一个星球。但是,尽管表面上看起来很神秘,可可制品 非常 强大,尽管水平很低。
    • 动画将是一个巨大的松一口气。可可动画很简单 容易的 要使用,而且在.NET中没有任何等效项
    • 如果您使用OpenGL而不是Cocoa本地图形,那么它就是OpenGL,而且OpenGL在任何平台上的风格都差不多。
    • 网络编程在cocoa方面比较差。你有一些基本的支持,并且必须承认,至少API的设计是很难做愚蠢的事情(它迫使你使用异步编程,因此每个客户端没有更多的线程没有意义),但我敢打赌你会错过.NET Sugar实用程序(WebRequest、WebClient等)。
    • XML分析。可可的支持只是简单的原始。至少,同样,XML解析是事件驱动的,因此它将引导您走向更好的程序,但是很难组合在一起。
    • 数据库。将会是一个不同的世界。您可以选择使用原始的sqlite或核心数据。核心数据更好。是一种高级ORM和活动记录类型的东西,所有底层存储的复杂性都被抽象掉了。使用方便,功能强大,只要你要求它做它知道怎么做的事情。强迫它做一些它不知道该怎么做的事情,真是太麻烦了。最终对任何ORM都是正确的。你会想念Linq,你会忘记SQL。其要点是,.NET的DB编程经验不会转移到核心数据世界。原始sqlite的替代方案看起来更熟悉,但级别很低,感觉更像是在编程1990年的odbc,而不是2010年的.net。
    • Key-Value Coding Programming . 这个概念没有直接的.NET等价物。这听起来像是一本简单的字典,但实际上它的功能更强大。它与[Objective-C]的目标部分的运行时引擎交织在一起,产生了一些巧妙的技巧。您需要了解键值编码,以便有效地使用核心动画或核心数据。你可以把它当作类固醇的反映。它可以实现Linq-to对象所能做的一些相同的技巧,但不会像Linq那样优雅。
    • 是C++。目标C是一个 超集 C++的支持,是最近GCC的支持,所以你可以随时回到C++。 STL ,函数, template metaprogramming 它们都能工作。你可以在同一个应用程序中混合和匹配纯可可和核心ObjuleC与C++。您将无法像继承ObjuleC类那样作为C++类,但是您将能够在C++类和ObjtoE-C对象之间进行通信。不确定当前的状态是什么 boost Loki 支持。

    Cocoa所覆盖的许多领域都有各种各样的第三方库,但我无法将所有Cocoa第三方与.NET 3R方进行比较,我有自己的生活……

    总的来说,我会把它总结为 在Objective-C中,入口栏更高。带上大脑。

        2
  •  31
  •   Audie    15 年前

    除了Remus出色的答案之外,您还需要理解并能够实现内存管理。如果你在JAVA或.NET上长大,这对你来说可能是陌生的。支付 非常 请密切关注本教程的这一部分,并通过有意地将其搞砸来练习这一点。您需要知道这些错误是什么样子的,以及它们的行为方式。

    祝你好运!

        3
  •  6
  •   Andy White    15 年前

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

    一旦您了解了目标C语法和约定,就必须深入研究Cocoa库和框架,这是非常重要的。

    我建议你读一本关于目标C或iPhone开发的书,或者阅读关于 http://developer.apple.com 站点。

    一旦开始使用,请访问此站点,以获取应用程序的良好代码示例: http://appsamuck.com

        4
  •  2
  •   SK.    15 年前

    我想如果你知道你会好起来的。不过,synthax不像大多数编程语言那样常见,例如

    对象.函数(var arg1)

    看起来像

    [对象函数[var:arg1]]

    如果我没记错的话。

    如果您有Apple dev id和iTunes,可以转到 http://developer.apple.com/iphone/index.action 然后转到“入门”视频(之后,它应该在某个时间询问您的Apple Dev ID,然后启动iTunes)。这里有很多视频。其中一个叫做“客观介绍C和可可触摸”可以是一个很好的开始。

    希望有帮助。

        5
  •  1
  •   Phil Gan    15 年前

    语言并不难,但我发现开发环境在某些方面不如VS那么灵活。例如,对于编码环境来说,接口生成器是一个独特的应用程序,会导致偶尔的同步问题,如果您输入的事件名不正确,编译器不会告诉您。

    已经说过接口生成器 美极了。你只需要记住在你返回到代码之前点击保存按钮。

    推荐文章