我已经开发了很长一段时间,但我认为自己有能力(或更好)使用C ++,Java,C#和从Web服务器到桌面应用程序再到3D游戏的AS3 / Flex,我知道所有这些语言非常相似;即使在图书馆方面,我也知道如何使用在另一种语言中做类似事情的库来寻找。
但是目标CI理解为不同的鱼类,并且开发移动设备一直让我感到很困难,因为你必须在你的PC上开发并测试实际的设备本身 - 我的开发经验由于调试器和其他工具很差,PS2让我失去了这些东西。
现实是什么?这是从网络服务器和桌面应用程序以及丰富的网络客户端转移到iPhone的范式转变......或者对于有经验的开发人员而言,它只是另一种学习和使用新库的语言吗?有什么可怕的吗?
编辑:我对Obj-C的主要问题是,它是否是一种不同的编程方式,例如它将从Java迁移到Haskell。听起来情况并非如此。
答案 0 :(得分:4)
对于初学者来说,只要你专注于基础知识,ObjC就相当容易掌握。不要担心语法,在C之上没有多少我认为你已经熟悉的了。有很好的书籍this book是我向大多数新用户推荐的权威指南,Erica Sadun也有一本关于iPhone开发的好书,我推荐这两本书。
其次,这些工具并不难使用,您会对调试器和其他工具集成感到惊喜。仪器耗时很长,但它对于捕获内存泄漏,CPU使用时间以及现在的功耗等问题是不可或缺的。
但实际上,没有什么可以被吓到的,还有另一个要学习的平台;好吧,是的,不。无论是iPhone还是其他什么东西,总会有另外一件事需要学习。不要抗拒。 :)
答案 1 :(得分:4)
绝对是“范式转换”(呃,流行语):
我发现最大的区别在于UI,而不是语言。语言很容易。图书馆需要一些阅读/搜索/询问,但随后他们很容易。 UI设计和UI编程非常难以做好。
答案 2 :(得分:2)
目标C与普通OO方法不同但不远。语法对我来说是一个更大的障碍。
我看到的问题是你是否正在学习iPhone的ObjC,而你无法在Applesphere之外学习技能(ObjC知识)。我还没有看到它的用途。我有一把书让我的脚湿透了。其中一些,Apress书籍,在代码演练中包含错误,导致我无数次地向Google发行勘误表。所以,如果你这样学习,请小心。
此外,除非发生这种情况,否则您只能使用SDK工具在OSX下进行开发,因为据我所知还没有Windows版本。
有了这个,你还必须通过Apples开发规则来发布到AppStore中,AppStore已经分享了它的开发恐怖故事。
也就是说,一个有效的应用程序最终会变得有趣和美丽。
答案 3 :(得分:1)
在1到10的范围内,它大约是6。
答案 4 :(得分:1)
Apple确实使用了Objective C,它与普通的C不同。因此,如果您之前从未使用过Objective-C,那么Iphone和IPad的开发会很困难。如果您熟悉一种名为SmallTalk的语言,那么Objective-C将非常容易您接受。
现在,其他移动设备(如Android)使用Java。如果您有能力使用Java,那么Android开发对您来说可能更容易。
有些设备使用Windows Mobile。如果您是.NET程序员,则可以使用.NET compact framework开发Windows Mobile Apps。
您也知道,大多数移动SDK都附带了一个模拟器来测试您的应用。因此,如果您没有iPhone,您仍然可以使用模拟器测试您的应用程序。据我所知,仿真器应该比实际设备准确率高99%
答案 5 :(得分:0)
我认为没有什么可怕的。
模拟器非常好,即使它无法处理某些事情 - 例如,很难模拟加速度计!
一旦你找到了你需要的证书并设置了iPhone开发账户等等,那就没关系了。
写一些东西,将它加载到设备上,尝试它等等,这有点痛苦,但事实上你可以实际调试设备上运行的代码使它比它可能更好。 (我必须维护诺基亚9110的应用程序,我必须编辑,编译,加载,运行,盲目崩溃,盯着代码,猜测,编辑,编译等。)
答案 6 :(得分:0)
作为Windows C ++ / .NET的长期开发人员,我发现在Objective C中开始开发并不困难。
有一些语法差异需要一些人习惯,但一般来说它与C / C ++相似,感觉不像是一种全新的语言。
学习图书馆代码以及你能做什么和不能做什么似乎对我来说是一个更大的挑战,这对任何新平台来说都是一个挑战。
答案 7 :(得分:0)
我正在写一本名为Hello的初学者书! iPhone,我已经制作了一个初学者提示的邮件列表,以帮助人们开始。经过一周左右的提示,您将更有能力查看其他书籍并更好地理解基础知识。
http://loufranco.com/beginner-iphone-programming-tips/
它将带您浏览Hello,World和其他一些简单的东西(Outlets and Actions,基本内存管理等)。