6

多年来,我一直在使用 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 沙盒?

好奇地阅读你的想法,

安德鲁

4

7 回答 7

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 在如何向用户显示方面可能会更好,但我真的很喜欢它本质上创建模板的方式,您可以通过 ctrl + / 跳转到消息中的下一个参数。

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

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

  • Objective-C - 我从未使用过它,这是我第一次尝试它。起初我对消息传递的语法和方括号有点厌烦,但它真的在我身上成长。浏览一个方法并查看该方法发出的消息调用非常快。我使用它的次数越多,Objective-C 的感觉就越好……但是模板/泛型将是该语言的一个受欢迎的补充。

总而言之,我对 Mac 开发的尝试是愉快的,我很高兴开始(今天!耶!)一些实际的 mac/iphone 项目。

于 2008-09-19T16:45:09.243 回答
3

我同意你的观点。从 Microsoft 开发工具(和 eclipse)到 XCode 有点苛刻。XCode 只是感觉……在某些方面还没有完成。它当然没有我对 VS 和 Eclipse 的期望。

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

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

于 2008-09-19T16:36:46.080 回答
2

我真的很想继续开发 iPhone 应用程序。我做过一些摩托罗拉、黑莓和 Windows Mobile 的开发,这些都很酷,而且很容易通过良好的文档进入,易于访问和安装 SDK。到目前为止,我觉得苹果有点精英化,因为他们的开发环境似乎只在 Mac 上可用。我也不太喜欢他们的许可概念。如果您希望能够真正发布应用程序,您需要通过它们,并且他们对您是否可以或您的应用程序是否被认为可以在他们的优质产品上运行有最终决定权。我相信他们让开源社区更难维护和生产应用程序,或者像我这样的 iPhone 新手甚至开始为产品编写应用程序。

于 2008-09-19T16:49:25.240 回答
2

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

于 2008-09-19T17:08:14.040 回答
1

我个人认为文档在这一点上非常好。在任何 Objective C 类上,您可以选择双击以显示该术语的文档,以及是否有任何示例项目使用列出的特定类(至少对于许多 iPhone 特定类)。

刚开始时也考虑打开 Research Assistant,并打开 Code Sense(不要认为它默认打开)。当你习惯了 XCode + Interface Builder 的组合时,它的功能非常强大,坦率地说,几十年来,我从未使用过更好的界面构建器,就代码集成的工作方式或设计智能调整大小的界面的能力而言大量的额外工作。

于 2008-09-21T04:41:05.817 回答
1

在为许多平台编程多年之后,我对 iPhone 编程和 XCode 也很陌生,我的印象与您的印象相当接近(有一些差异):

  • Mac OSX:大约 2 年前(作为实验)我从 Windows 切换并留下了 :) - 我不认为我会切换回来。拥有 Unix 基础非常酷,我喜欢华丽的 GUI + 我喜欢界面的基本简单性。我花了大约 2 个月的时间来适应它,但我无法想象回去。我讨厌 MacBook 的键盘布局和一些 OSX 的键盘限制。有趣的是,一家以其可用性洞察力而自豪的公司怎么会做出如此糟糕的决定。也许最好的例子是没有上下文菜单(右键单击)键盘快捷键,并且您需要两个键来完成诸如 Home、End、PgUp 等任务。我的主要建议是花时间学习尽可能多的键盘尽可能走捷径。我还建议安装 &Quicksilver路径查找器1PasswordThingsTextMateText Wrangler & Transmit

  • Xcode:我完全同意你的看法。我认为 XCode相当原始。我将它与我经常使用的 IntelliJ IDEA 进行比较,感觉 Apple 至少在 7 年前就被困住了:

    • 代码导航太原始了,有太多的窗口跳来跳去
    • 你必须一直使用鼠标
    • 模板非常有限,并且基于与上下文或范围无关的幼稚宏观概念
    • 重构仅限于几个简单的动作
    • 您甚至无法轻松完成诸如覆盖方法之类的琐碎任务
    • Code Sense 很好,但如果它理解打字可能会更好......

    具有讽刺意味的是,严肃的 Mac 开发人员甚至不明白他们有问题......他们已经习惯了必须处理的混乱局面,以至于他们无法想象一个更美好的世界......而不是帮助你, XCode 一直在阻碍。与现代 Java IDE(Eclipse、IntelliJ)相比,我可以举出几十个例子来说明这个环境是如何糟糕的,但我认为这是在浪费时间——苹果似乎太自豪而无法向其他人学习......如果您考虑到 Java 的发明者并不羞于向Objective-C 学习这一事实,那就很有趣了。我唯一的建议(也是对我自己)是每次打开 XCode 时都要深呼吸,并尽可能多地向更习惯这种环境的专家学习。

  • iPhone SDK:比这更糟糕——几个月前我们考虑将我们的移动应用程序移植到 iPhone 上,但决定不打扰,因为我们担心 Apple 可能会从应用程序商店拒绝它,而你无法提前知道(他们过去曾拒绝过一个有点相似的应用程序,理由是它与 iTunes 太接近了!)

  • Obj-C: I find Objective-C quite nice and after a few days you get used to the awkward messaging syntax, but boy do I miss garbage collection... Having to deal with memory allocations and releases feels a bit like going back in time to my early C/C++ days. I'm just beginning to learn the nuances of this language, but so far I like what I found. There are quite a few tips scattered around the web about Obj-C best practices that you can't find in the official docs and I learned a lot from them (see for example the following discussion here on stackoverflow)

于 2009-02-03T10:25:50.253 回答
0

我也有 C# 背景,从 beta 2 开始就一直在使用 iPhone SDK。我完全同意克兰利的观点,即 VS 与 Xcode 相比有点笨拙。Xcode 是非常不同的,当你开始使用它时完全陌生。VS 在过去也是如此。一旦你通过了学习曲线,那将是一次美妙的体验。我正在开发的应用程序使用 C# 服务器端(Web 服务),我非常讨厌不得不切换到 VS 来从 Xcode 编写 Web 服务代码。一旦您了解了 Obj-C 的最佳工作方式,使用起来也非常有趣:委托(与 .NET 委托非常不同)、消息、类别和所有其他奇怪的东西。

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

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

于 2008-09-19T17:08:26.520 回答