iPhone编程-印象,意见?

时间:2020-03-06 14:26:48  来源:igfitidea点击:

多年来,我一直在使用C,C ++,C和其他几种语言进行编程,主要是针对Windows和Linux,还包括嵌入式平台。最近,我开始作为副项目进行一些iPhone编程,因此自从Apple II以来,我第一次使用Apple平台。我想知道Mac OSX,Xcode和iPhone SDK的其他开发人员会怎么想。到目前为止,这是我的印象:

  • Mac OSX:非常令人困惑,我倾向于以太多打开的窗口结束并且不知道在哪里。幸运的是,有鸟瞰图,没有它,我会迷路的。至少有了外壳,所有熟悉的东西都会对我有很大帮助。
  • Xcode:感觉不如VisualStudio或者Eclipse(我熟悉的两种环境)好。我想我可以适应它,但是我想知道苹果是否会更好地使用Eclipse。在我发现所有窗户都粘在一起的设置之前,我讨厌它,现在我可以忍受了。
  • iPhone SDK:确实很奇怪。我了解苹果公司希望控制他们的环境的愿望,但是在当今时代,这似乎有些懈怠,并且他们破坏了开发商的信誉,因此错过了很多东西。
  • Objective-C:我已经知道了很多年,但是从来没有看过它。语法令人反感,但实际上我对该语言很感兴趣。我认为这是介于C ++和C#之间的有趣的第三步,我都非常喜欢这两者。由于Apple技术的普及,Obj-C是否有可能脱离Mac沙箱?

好奇地阅读想法,

安德鲁

解决方案

我同意你的观点。从Microsoft开发工具(和eclipse)到XCode,都是很苛刻的。 XCode只是感觉...在某些方面尚未完成。当然,它并没有我期望从VS和Eclipse获得的提升。

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

但是,Objective-C很棒。我非常喜欢这种语言,尽管它有古怪的特性和特质(null的消息不是运行时异常吗? (如果有些危险并且容易发生RTE)。

我和你在同一条船上(有点)。从.NET 1.0开始,我从事C开发已有7年了。在过去的几周中,我一直在自学可可和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项目。

我真的很想跳下去,也开始开发iPhone应用程序。我已经完成了一些Motorola,Blackberry和Windows Mobile的开发工作,这些都是不错的东西,可以很好地使用文档,易于访问和安装SDK。到目前为止,我觉得苹果似乎有点精英,因为他们的开发环境似乎只能在Mac上使用。我也不太喜欢他们的许可概念。如果我们希望能够实际发布应用程序,则需要仔细研究它们,并且它们对我们是否可以或者是否可以在其高级产品上运行应用程序拥有最终决定权。我认为,这使开源社区更加难以维护和生产应用程序,或者像我这样的iPhone neophite甚至更难以开始为产品编写应用程序。关于微软,有很多不好的说法,但是,我不得不说,在产品推向市场之前,他们就已经推出了API和SDK,并真正鼓励各级程序员深入研究并参与为其框架和平台编写应用程序操作系统。

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

我也来自Cbackground,从beta 2开始就一直使用iPhone SDK。我完全同意cranley的观点,即与Xcode相比,VS有点笨拙。 Xcode有所不同,并且在我们开始使用它时完全陌生。 VS也是如此。一旦我们掌握了学习过程,那将是一次绝妙的体验。我正在开发的应用程序使用Cserver端(Web服务),我绝对讨厌不得不切换到VS以从Xcode编写Web服务代码。一旦我们了解了它的最佳工作方式,Obj-C就会非常有趣:代理(与.NET代理完全不同),消息,类别以及所有其他奇怪的事物。

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

总的来说,我发现的最大问题是,有很多.NET开发人员跳上iPhone潮流,试图像使用VB一样使用Obj-C。他们无法阅读基本的Obj-C文档,更不用说iPhone文档了,然后他们非常沮丧,最终失败了。讨论论坛充满了这种情况。 iPhone编程并不容易。学习一种新语言并不容易。这需要时间和很多try.fail.try。它不是.NET,所以甚至在开始之前就已经失去了这种思维定势,事情将会变得很美好。

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

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

在许多平台上进行了多年编程之后,我还是iPhone编程和XCode的新手,我的印象与印象相当(有些不同):

  • Mac OSX:大约2年前,我从Windows切换了(作为实验),我留下了:)-我不认为我会切换回去。拥有Unix基础非常酷,我喜欢华丽的GUI +我喜欢界面的基本简单性。我花了大约2个月的时间来适应它,但我无法想象会回来。我讨厌MacBook键盘布局和OSX的某些键盘限制。有趣的是,一家对可用性见解感到自豪的公司如何提出如此糟糕的决定。也许最好的例子是没有上下文菜单(右键单击)键盘快捷键,以及我们需要两个键来完成诸如Home,End,PgUp等任务的事实。我的主要建议是花时间学习尽可能多的键盘捷径越好。我还建议安装和使用以下可大大改善我的Mac体验的第三方应用程序:Quicksilver,Path Finder,1Password,Things,TextMate,Text Wrangler和Transmit。
  • 你必须一直使用鼠标
  • 模板是非常有限的,并且基于幼稚的宏概念,与上下文或者作用域无关
  • 重构仅限于一些简单的操作
  • 我们甚至无法轻松完成诸如覆盖方法之类的琐碎任务
  • Code Sense很不错,但是如果它能理解打字的话,它本来可以更好的...

具有讽刺意味的是,严肃的Mac开发人员甚至都不知道自己有问题...他们已经习惯了必须处理的混乱局面,以至于无法想象一个更美好的世界...而不是, XCode一直在妨碍我们。与现代Java IDE(Eclipse,IntelliJ)相比,我可以拿出数十个有关此环境如何糟糕的示例,但我相信这似乎是在浪费时间,苹果似乎为向他人学习而感到自豪...如果考虑到Java的发明者不愿意向Objective-C学习的事实,这很有趣。我唯一的建议(也是我自己的建议)是每次打开XCode时都要深呼吸,并尽可能多地从习惯这种环境的专家那里学习。

  • iPhone SDK:甚至比这更糟-我们几个月前考虑过将移动应用程序移植到iPhone,但由于担心Apple可能会拒绝从应用程序商店中删除它,而且我们事先不知道,因此决定不打扰(他们过去曾以与iTunes太近为由拒绝了一款类似的应用!)
  • Obj-C:我发现Objective-C相当不错,几天后我们习惯了笨拙的消息传递语法,但是男孩,我确实会错过垃圾回收...不得不处理内存分配和释放的感觉有点像回去时间到我早期的C / C ++时代。我才刚刚开始学习这种语言的细微差别,但是到目前为止,我仍然喜欢发现的东西。网上散布了很多关于Obj-C最佳实践的技巧,我们在官方文档中找不到这些技巧,我从中学到了很多(例如,请参阅下面有关stackoverflow的以下讨论)