我是一个非常熟练的Java开发人员,正在考虑学习iPhone开发.Mac除了开发方面之外,学习移动应用程序堆栈有多大的飞跃?当然我理解它更接近于C应该如何接近它,并且随之而来的是内存管理等等.
我的查询也包括
OOP/OOAD的支持程度如何?
是否有一些API可以进行单元测试?
我鼓励那些回答引用外部网站和引用的人帮助详细说明细节
开发语言是Objective-C,它是纯C,顶部有一个非常薄的对象包装器.他们的语法有点奇怪,但是如果你知道C一旦你克服了消息调用就很容易掌握 - 我自己有一个坚实的C背景并且只开始在一两个月内拿起Objective-C但我发现它真的很令人愉悦 - 比C++更令人愉悦.
如果您只编写Java,那么您将遇到的困难是指针和内存管理.内存管理在概念上并不困难,因为它只是(!)跟踪你正在分配和发布的内容的问题,而且XCode似乎带有检测泄漏的好工具(尽管我还没有在愤怒中使用它们) - 而且由于iPhone程序相对较小,它不像编写一个大系统程序,而这可能非常困难.你可能遇到的主要概念上的困难就是随着它们被广泛使用(就像几乎所有的代码行一样)而直接指向你的指针,你需要完全理解它们.Joel在播客上重新定位的一个主题是一些编码人员使用指针的难度,所以我'
有人可能想纠正我,但是虽然Cocoa API看起来非常出色,但框架之外似乎很少有可用的库(与C++或Java不同).例如,我必须添加自己的队列和堆栈类 - 尽管NSMutableArray非常容易.
总而言之,我肯定会发现它是我玩过一段时间最有趣的平台之一.
几个月前,我是一名Java网络程序员,从大学开始就没有接触过C语言.现在我已经完成了一个iPhone应用程序(对于我的日常工作,卡在那里的官僚机构,所以它还没有在应用程序商店中)和我的第二个应用程序接近完成.
要回答你的问题,最大的障碍是理解约定(委托模式,类别等),掌握内存管理,以及使用XCode(一个好的IDE但绝对落后于Eclipse和IntelliJ).
我还认为Apple开发人员中心网站上的文档写得很好,一个优秀的开发人员可以快速启动和运行.
为了更具体地回答你的问题,我还没有尝试过单元测试,但我认为OOP很棒 - 我的iPhone应用程序中的域对象与我用Java编写的那些一样强大和强大.