来自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网站上有一些很棒的示例代码和文档。