【问题标题】:Any suggestions on how to approach learning the Cocoa Touch API?关于如何学习 Cocoa Touch API 的任何建议?
【发布时间】:2011-08-17 01:16:03
【问题描述】:

我是一名经验丰富的程序员(C、一点 C++、PHP、JavaScript),正在潜心研究 iOS 开发。我不得不说,虽然我毫无问题地获得了 Objective-C,但 Cocoa Touch API 非常庞大,而且相当复杂。看起来很简单的事情,比如在地图上放置一个带注释的图钉,需要几个步骤,如果不阅读书中的示例,我永远不会想到。

我正在寻找有关如何解决学习这个庞然大物 API 的建议。假设我想弄清楚如何打开一个 URL、从中获取 XML 数据并对其进行解析。我怎么会知道从哪里开始(只是一个例子,实际上不要回答)?我有 Xcode 4,所以我想文档必须以某种方式使这对我来说相对简单。我只是新手,所以我不知道从哪里开始,所以任何建议都会很重要。谢谢。

【问题讨论】:

    标签: cocoa-touch ios xcode4


    【解决方案1】:

    有效学习它的最佳方法是用它编写代码。这需要付出很多努力,主要是因为 Apple API:s 需要与您可能习惯的大多数其他 API:s 不同的思维方式,尤其是如果来自 PHP 或 JavaScript 背景。

    要克服的第一个障碍是您必须接受这样一个事实,即许多您认为理所当然的事情现在需要更多的代码, 必须编写这些代码。举几个例子来说明:

    • 如果您来自 PHP,那么您已经习惯了 SimpleXML,它只需要几行代码即可使用。在 iOS 中,有一个 SAX 解析器,它需要更多的努力和复杂性才能使用。
    • 对于活动指示器,您可以使用类似于animated image 的东西,但您必须添加自己的标签和代码以确保在微调器运行时阻止用户触摸事件。
    • 如果您想要一个漂亮的彩色非默认非圆形矩形-白色按钮,您必须自己编写代码。这并不难,但绝对不像创建 CSS 文件。

    因此,大多数(看似)简单的任务比您可能习惯的需要更多的努力。

    下一个障碍是在精神上将自己与 Interface Builder 分离。 IB 乍一看似乎很诱人,但最终还是会或多或少地用代码编写 GUI。例如:UIPoovers、导航栏、转换、表格和自定义工具栏等。

    另一个障碍是 UINavigationBar。当您真正了解它的工作原理时,您已经走了很长一段路!我并不是说它不好,只是它与您可能习惯的非常不同。

    不要羞于在这里提问并使用谷歌。不过,仅仅阅读有关它的书籍也无济于事。

    请注意,这不是对平台的批评。恰恰相反,因为我个人非常喜欢它并且理解它为什么会以它的方式工作的原因(大部分时间)。只是许多刚开始进行 iOS 开发的程序员对开始使用它的容易程度抱有很高的期望,结果却被烧毁或沮丧。

    【讨论】:

    • 这里展示的消极主义是不必要和误导的。创建按钮和进度指示器通常根本不需要代码;解析 XML 与使用任何其他基于 SAX 的解析器非常相似。避免 IB 的建议对 OP 不利;新手经常想避开 IB,因为他们不了解它,但有经验的开发人员依赖于 IB。很少有理由直接使用 UINavigationBar;让 UINavigationController 为您管理任何导航栏,生活会简单得多。
    • @Caleb。以上所有内容都是许多人第一次潜入该平台的经历。为此而躲避是不诚实的,只会导致挫败感。作为记录,我个人非常喜欢这个平台。我每天都在全职工作。我不想和你打架,所以我刚刚用一些例子更新了我的答案。再说一遍:我真的很喜欢它,但是来自 PHP 或 JavaScript 的 ppl 会经历一段艰难(但很有趣)的旅程。
    • 您改进了您的帖子。采用新平台总是需要付出努力,无论是 PHP、Cocoa Touch、VB 还是其他任何平台。 OP 似乎已经发现他不在堪萨斯了,现在的问题是“我从哪里开始?”不是“这会伤害多少?”我仍然认为避免 IB 是错误的,因为它不能做所有事情,而不是接受它做得好的事情,但如果你是这样认为的,那就这样吧。无需点名。
    • @Caleb:我从来没有说过要避免 IB,我说过不要太依赖它。作为初学者,很容易将 IB 与构建 GUI 的完整工具混淆:许多人在意识到无论如何都必须在代码中完成大部分工作时会感到失望或放弃。
    【解决方案2】:

    斯坦福的优秀课程CS 193P,“iPhone 应用程序开发”,在 iTunes U 中免费提供。

    【讨论】:

    • 谢谢。我知道这门课程,但我的问题更多是关于如何处理来自复杂 API 的如此多信息,以及如何着手解决我想在应用程序中执行的操作。
    【解决方案3】:

    专注于基础知识。确保您阅读并完全理解Memory Management Programming Guide。如果您阅读 SO 一段时间,您会发现很大一部分与 iOS 相关的问题来自显然没有阅读过该文档的人。有趣的是,它真的没有那么复杂——这里的记忆问题的答案几乎总是一样的,而且几乎总是由this page回答。

    了解构成 iOS 应用程序块的类。了解 UIResponder、UIView、UIControl 和 UIViewController 的作用,以及如何将它们子类化以做你想做的事。有解释所有重要想法的文档,例如 viewsview controllers。阅读这些:了解在文档中的何处可以找到信息将帮助您更快地提高工作效率。视图控制器为应用提供了可见的结构,因此了解您自己的视图控制器对象如何由容器视图控制器(如导航控制器和标签栏控制器)管理非常重要。

    也要了解重要的模式:MVC 是指导您的哲学;到处都在使用委托;责任链用于处理事件。一旦您获得模式,解析 XML 文件,为表格提供数据,以及在地图上放置图钉,所有这些都开始以同样的方式变得有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2023-03-11
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多