来自Java的学习iPhone编程的最佳方法是什么?

我已经开始阅读有关此主题的所有可用的Apple文档。 快速概述给了我一些大约8.000(八千)DIN A4 PDF页面。 大约10%的内容几乎与我的感觉相同。 经过两周的阅读,我发现我会忘记一周前我读过的内容。 除非我开始对知识做点什么,否则它就像是大脑的消耗。

你的学习策略是什么?

斯坦福大学有一个免费课程( 这里 ),您可以从iTunes U下载。它包含video和PDF文件,并在每个讲座后有作业,您可以用作开发的想法。

来自Java世界,我认为最难学的是:

  • 内存管理使用引用计数而不是GC
  • 了解如何利用消息调度,充分利用Objective-C

Apple提供的论坛和文档也很好,应该是你做的任何参考。

这就是我所做的(我来自Java / C ++背景):

开始

  • 在http://developer.apple.com注册成为iPhone开发人员(这是免费的)
  • 下载iPhone SDK(其中包括最新版本的XCode和SDK文档 – 在使用SDK或创建应用程序时,您将经常使用它们)。
  • 获取Hillegass书 。 本书很好地讲授了Cocoa的基本概念。 我发现它是了解Cocoa中引用计数的好方法(保留,释放,赋值等)
  • 在iPhone编程上购买Orange书 。 这真的很棒。 (我之前买过Erica Sadun的书,但这并不是从初学者的角度解释的)
  • 试试这些课程。

这应该让你合理地提高速度和开发基本应用程序。 (我还没有看过斯坦福大学的video讲座,但我认为这也是一个非常好的开始方式)

变得更好

  • 为了更好地理解Cocoa概念,我找到了最好的资源来成为Apple Programming Guides。 你一定要读这些。 他们几乎每个主题都有一个,从NSStrings到Objective 2.0属性,内存模型等。您可以在XCode文档中找到它们。 (如果您正在查找课程参考等,您会发现左侧栏中列出了相关的编程指南)
  • Apple示例代码:您可以在http://developer.apple.com上再次找到它。 您可以重复使用和/或调整这些。

您应该立即开始开发应用程序。 如果您遇到困难或需要建议,可以参考以下资源:

当你被卡住时该怎么办

  • Cocoa-Dev邮件列表(这不是Cocoa-touch本身,但我从这里得到了一些非常好的答案)
  • Apple论坛
  • IRC

(我不确定上面的资源列表是否足够好 – 但其他人可以纠正我)

在阅读/倾斜时编写代码(比如hello world,有点东西)。 这是我似乎能保留东西的唯一方法。

不要只考虑它…..做到这一点。

基础

学习Objective-C

  • Apple的Objective-C 2.0编程语言是最接近口袋参考的东西。 它有大约125页。 Apple提供了几个主题,很棒的东西。

学习UIKit (又名iPhone编程)

  • iPhone编程, Joe Conway和Aaron Hillegass 的Big Nerd Ranch指南

与大多数书籍不同,牧场指南会解释您的课程等级。 否则你会在一系列步骤之后得到漂亮的应用程序,但无法单独飞行。

我喜欢一次从几本书中读到一个主题。 我几乎有关于iPhone编程的所有书籍,我也可以推荐

  • 由Matt Neuburg 编程的iOS 6 (也可在线获取 )
  • Erica Sadun 的iPhone Developer’s Cookbook
  • Bill Dudney的iPhone SDK开发

做你的作业

我建议你做笔记并做练习。 专注于小任务。 例如,创建一个“基于导航的应用程序模板”项目,并尝试理解它。 然后添加function,如创建单元格,删除单元格,对其进行排序,单击单元格以推送第二个屏幕。 像这样的东西。 编写摘要时,你记得要好50%。

由于GCC的限制,Xcode并不像Eclipse那样复杂。 您应该做的第一件事是在项目中激活NSZombieEnabled以获得更好的错误消息。

你会发现小障碍并犯下愚蠢的错误。 让附近的人帮助你是很有帮助的。 如果不这样做,则有StackOverflow。

先进的东西

Core Data是Apple针对iPhone的O / R映射。 你将它用于任何数据库相关的东西。

  • 核心数据由Marcus S. Zarra撰写

核心图形/动画位于UIKit之下。 要超越大多数iPhone编程书籍将教你的东西,你需要自己绘图来实现高级UI自定义。

  • Bill Dudney的Mac OS X核心动画和iPhone

WWDC会议总是来自编写UIKit框架的Apple员工的很棒的东西。 WWDC 2010对注册开发者免费:

  • WWDC 2010会议

一些博客上载有有用的提示和技巧:

  • iDev食谱
  • 在桥下
  • cocoa充满爱
  • ……还有更多 。 几乎任何最终出现在书上的东西都可以在互联网上看到。

关注Twitters的编码员。 去你所在城市的NSCoder会议,即使你不是程序员,也欢迎大家。

一旦您注册Apple以使用iPhone SDK(它可以免费下载和玩游戏,您只需要支付,如果您想在App Store上销售您的应用程序),您就可以访问一些非常棒的开发者资源 – 论坛,文档,示例代码等。我强烈建议使用这些资源作为一个很好的起点。

从Apple下载一些基本的示例应用程序,以了解事物如何组合在一起。 在iPhone上进行开发肯定与其他类型的开发有很大的不同,因此有很多例子可供使用和参考。

直到我对我所处的环境有所了解,我倾向于运行示例代码和/或教程……但我从未完全遵循它们。 总是改变一些值,一些细节一些实现方法,并观察它的结果。

按照指示,我什么都不学。 改变一切,看到它的效果,我学到了很多东西。

本文档是从C ++ / Java到Objective-C的语言rosetta(在那里为Java人员提供了很多东西):

http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf

除此之外,请注意iPhone通过广泛而深入的基础类非常重要,就像Java一样。 尝试尽可能地学习它们,并注意当你需要更多的灵活性时,Cocoa下的基于CF C的调用甚至更深层次。

很好地理解内存管理模型,它很容易处理。 这是我在阅读使用Interface Builder出口时如何处理内存管理的绝对最好和最简单的描述:

http://blog.airsource.co.uk/index.php/2008/12/23/memory-management-and-nibs/

我会在这些非常好的答案中添加一些内容 – 选择一个项目并立即开始工作。 当我不得不为我的实施找到答案时,我会更加深入地学习,而不是“学习”时我没有别的动机。

您可以发布另一个问题,询问您的第一个项目的想法。

当我学习任何新语言时,我会使用提供的示例代码并从头开始重写。 这样,如果我被困在如何做某事我可以翻转到提供的样本作为参考。 我发现简单地重写示例代码可以帮助我,特别是当存在很大的语法差异时。

关于iPhone,我会密切关注内存管理。 iPhone Dev网站上有一些很棒的示例代码和文档。