iPhone编程 - 印象,意见?

时间:2008-09-19 16:29:48

标签: c# c++ iphone objective-c development-environment

我多年来一直使用C,C ++,C#和其他一些语言进行编程,主要用于Windows和Linux以及嵌入式平台。最近开始做一些iPhone编程作为一个侧面项目,所以我自Apple II天以来第一次使用Apple平台。我想知道其他开发人员对Mac OSX,Xcode和iPhone SDK的看法。到目前为止,这是我的印象:

  • Mac OSX:非常令人困惑,我倾向于打开太多打开的窗口而不知道它在哪里。幸运的是鸟瞰图,没有它我会迷路。至少有贝壳所有熟悉的东西,这对我有很大的帮助。

  • Xcode:感觉不像VisualStudio或Eclipse,我熟悉的两个环境。我想我可以习惯它,但我想知道Apple是不是会更好用Eclipse。在我找到所有窗户粘在一起的环境之前我讨厌它,现在我可以容忍它。

  • iPhone SDK:确实很奇怪。我理解Apple希望控制他们的环境,但在这个时代,它似乎有点肮脏,他们因为破坏了开发人员的善意而错过了很多。

  • Objective-C:我已经了解它多年,但从来没有看过它。语法令人反感,但实际上我对语言非常感兴趣。我认为这是C ++和C#之间有趣的第三站,我喜欢这两者。由于Apple技术的普及,Obj-C有没有机会突破Mac沙盒?

好奇地阅读你的想法,

安德鲁

7 个答案:

答案 0 :(得分:5)

我和你在同一条船上(有点)。从.NET 1.0开始,我已经在C#中开发了7年。在过去几周里,我一直在教自己Cocoa和Objective-C。以下是我的印象(请注意与您合作)

  • 同意这种混乱可能是一个问题。在XCode中开发时,我倾向于大量使用Spaces(将XCode放在一个空间中,将Interface Builder放在另一个空间中,将Instruments放在第三个空间中)。如果您没有Leopard(因此没有空格),请使用Command-H隐藏您的活动窗口。使用它往往会清理一些东西(但是如果你能在命令选项卡到另一个应用程序时自动命令-h当前窗口,那就太好了。)

  • 我越来越喜欢XCode。我讨厌Visual Studio - 我发现它不稳定,速度慢,而且很好,只是一种糟糕的IDE。相比之下,我发现XCode快速,稳定,我喜欢它如何组织和过滤你的文件。我不太喜欢我的XCode快捷方式,但我希望有一种方法可以从一个类快速切换到另一个类(类似于ReSharper中的ctrl + n快捷方式)。关于它如何向用户显示,Intellisense可能会更好,但我真的很喜欢它实际上是如何创建模板的,你可以按c + +跳转到消息中的下一个参数。

  • 我讨厌XCode中的文档。帮助系统很糟糕,无论出于何种原因,永远不会找到我正在搜索的内容。我最终只是谷歌搜索我需要知道的任何事情......我希望他们改进文档。这是我现在最大的牛肉。

  • 还没有,因为我正在浏览Mac桌面的完整Cocoa框架。到目前为止,我真的非常喜欢我所看到的。我要说的一件事是,如果iPhone SDK允许垃圾收集会很好......

  • Objective-C - 我从未使用它,这是我第一次涉足它。起初,我的语法和方括号对于消息传递有点奇怪,但它确实在我身上发展。浏览方法并查看方法所做的消息调用是如此之快。我使用的越多,Objective-C就越好......但是模板/泛音会成为语言的一个受欢迎的补充。

总而言之,我对Mac开发的兴趣一直很愉快,我很高兴能够开始工作(今天!耶!)一些实际的mac / iphone项目。

答案 1 :(得分:3)

我同意你的观点。从微软开发工具(和eclipse)到XCode是很苛刻的。 XCode感觉......在某些方面尚未完成。它肯定没有我期望从VS和Eclipse中获得的光彩。

SDK类似,其中大部分都没有很好的文档记录,而且你知道应该有很多漏洞,但事实并非如此。试图仔细控制音频/视频文件播放是一个例子。

然而,Objective-C非常棒。我非常喜欢这种语言,尽管它的怪癖和特质(消息为null不是运行时异常?真的吗?)一旦你的C ++眼睛习惯了语法,松散类型的匿名消息实际上最终真的很酷玩与(如果有点危险并且倾向于RTE。)

答案 2 :(得分:2)

我真的想继续开始开发iPhone应用程序。我已经完成了一些摩托罗拉,黑莓和Windows Mobile的开发,这些开发都非常酷,可以很好地获取文档,易于访问和安装SDK。到目前为止,我觉得Apple似乎有点精英,因为它们的开发环境似乎只能在Mac上使用。我也不太喜欢他们的许可概念。如果您希望能够实际发布应用程序,则需要仔细阅读它们,并且他们对您是否可以或者您的应用程序是否被认为可以使用其优质产品有最终决定权。我相信他们让开源社区更难以维护和生成应用程序,或者像我这样的iPhone neophite,甚至开始为产品编写应用程序。关于微软有很多不好的事情,但是,我不得不说他们在产品上市之前很早就得到了他们的API和SDK,并且真正鼓励所有级别的程序员深入挖掘并参与为他们的框架编写应用程序。操作系统。

答案 3 :(得分:2)

我已经开发了一些小型iPhone应用程序,我很惊讶它们没有包含框架的组件,使开发人员能够轻松访问SOAP Web服务。在企业IT环境中工作的其他人是否感到痛苦?

答案 4 :(得分:1)

我个人认为此时的文档非常好。在任何Objective C类上,你可以选择doubleClick来显示该术语的文档,如果有任何示例项目使用列出的特定类(至少对于许多iPhone特定类)。

还要考虑在刚开始时打开Research Assistant,然后启用Code Sense(默认情况下不要认为它已启用)。 XCode + Interface Builder的组合在您习惯它时非常强大,坦率地说,在几十年内,我从未使用过更好的界面构建器,无论是代码集成的工作方式还是设计智能调整大小的接口的能力大量的额外工作。

答案 5 :(得分:1)

对于许多平台进行多年编程后,我对iPhone编程和XCode也很陌生,而且我的印象非常接近你(有一些差异):

  • Mac OSX:我大约2年前从Windows切换(作为实验),我留下了:) - 我不认为我会转回来。拥有Unix基础非常酷,我喜欢华丽的GUI +我喜欢界面的基本简洁性。我花了大约2个月才习惯它,但我无法想象回去。我讨厌MacBook键盘布局和一些OSX的键盘限制。有趣的是,一家为其可用性洞察力而自豪的公司如何能够提出如此糟糕的决策。也许最好的例子是没有上下文菜单(右键单击)键盘快捷键以及你需要两个键来完成Home,End,PgUp等任务的事实。我的主要建议是花时间学习尽可能多的键盘快捷方式尽可能。我还建议安装&使用以下第三方应用大大改善了我的Mac体验:QuicksilverPath Finder1PasswordThingsTextMateText Wrangler& Transmit

  • Xcode:我完全同意你的观点。我认为XCode 相当原始。我将它与我工作的IntelliJ IDEA进行比较,感觉Apple过去至少已经停留了7年:

    • 代码导航是如此原始,有太多的窗户蹦蹦跳跳
    • 你必须一直使用鼠标
    • 模板非常有限,并且基于与上下文或范围无关的天真宏观概念
    • 重构仅限于几个简单的操作
    • 你甚至无法轻易完成重写方法等琐碎任务
    • Code Sense很不错,但如果它理解打字就可以好得多......

    具有讽刺意味的是,严肃的Mac开发人员甚至不明白他们有问题 ......他们已经习惯了他们必须处理的混乱,他们无法想象更好的世界...... XCode不再帮助你,而是不断阻碍你。与现代Java IDE(Eclipse,IntelliJ)相比,我可以提出几十个关于环境如何糟糕的例子,但我认为这是浪费时间 - 似乎Apple太自豪了,不能向别人学习......如果你考虑到Java的发明者并不害羞learn from Objective-C这个事实,这很有趣。我唯一的建议(对我自己而言)就是在你打开XCode和learn as much as possible from the experts时更加习惯于这种环境。

  • iPhone SDK:情况甚至更糟 - 我们考虑在几个月前将our mobile app移植到iPhone上,但决定不要打扰,因为我们担心Apple可能会拒绝它从应用程序商店和你不能提前知道(他们过去rejected有点类似的应用程序,因为它离iTunes太近了!)

  • Obj-C:我觉得Objective-C相当不错,几天之后你就习惯了尴尬的消息传递语法,但是男孩我会想念垃圾收集......不得不处理内存分配和发布感觉有点像回到我早期的C / C ++时代。我刚开始学习这种语言的细微差别,但到目前为止,我喜欢我发现的东西。网上有很多关于Obj-C最佳实践的提示,你在官方文档中找不到这些技巧,我从中学到了很多东西(参见下面的讨论here on stackoverflow

答案 6 :(得分:0)

我也来自C#背景,自从测试版2以来一直在使用iPhone SDK。我完全同意,与Xcode相比,VS有点笨重。 Xcode与WAY不同,当你开始使用它时完全是外来的。 VS虽然在当天也是如此。一旦你了解了学习曲线,这将是一次美妙的体验。我正在开发的应用程序使用C#服务器端(Web服务),我绝对不喜欢切换到VS从Xcode编写Web服务代码。一旦你了解了它的最佳效果,使用Obj-C也很有趣:代表(与.NET代表截然不同),消息,类别以及所有其他奇怪的东西。

我在.NET之前做过一些Java和Flex编程,与Java文档相比,我总是讨厌.NET文档。他们只是不削减它。我个人发现Xcodes文档和搜索系统简直太棒了。从拥有大量示例代码的文档中链接了无数的PDF指南。想一想:iPhone SDK已经退出测试版大约2个月了。文档显示了多年的成熟度。是的,这是因为Obj-C已经存在了一年多,框架也很相似。

总的来说,我发现的最大问题是有很多.NET开发人员在iPhone上加入潮流并尝试使用Obj-C,就好像它是C#或VB一样。他们没有阅读基本的Obj-C文档,更不用说iPhone文档,然后他们非常沮丧并最终失败。讨论论坛充满了这种情况。 iPhone编程并不容易。学习一门新语言并不容易。这需要时间和很多try.fail.try。它不是.NET,所以在你开始之前就失去了这种心态,事情就会很精彩。