以编程方式完整创建iPhone应用程序

3

我最近对iPhone应用程序开发产生了兴趣,因此我一直在查看在线教程,并阅读一本书,在实践示例的同时学习。

我的技能正在提高,但是我仍然觉得通常的开发模式中有一件非常烦人的事情,那就是我真的不知道SDK在幕后做了什么来使应用程序“工作”,因为苹果公司保护了我。例如,当我在接口构建器上进行连接时,这可能对应于某个地方生成的代码……该代码在哪里以及它是如何工作的并不明显(对我而言)。

因此,我想知道是否可以完全以编程方式创建iPhone应用程序?也就是说,从某个主方法开始执行,然后通过编程方式创建任何视图、注册事件监听器等。如果可以,那么像这样的好资源有哪些?


如果它是一个能够重生的IPHONE应用,那会让你相当困惑。哦,这可真是让人难以置信。 - slf
2
Interface Builder 不会生成代码。 - Giao
它生成的XML文件可以被视为代码,因此这一点是有争议的。 - Jamison Dance
与苹果“非信徒”的普遍看法相反,iPhone应用程序中没有发生任何“秘密”事件。苹果不会为您提供任何“保护”,它只是让创建东西变得更加“容易”,这样您就不必一遍又一遍地重复相同的任务,而是可以继续开发应用程序中的功能。当然,您也可以从头开始编写所有内容,包括主方法。 - stefanB
2
@stefanB 我猜你是一个苹果的“信徒”,我的问题似乎触动了你的神经,因为你感到有必要强调像秘密、保护和更容易等词语。我在原帖中选择的用词反映了我在 iPhone 项目上工作的短暂时间所得到的印象,并不意味着归属于任何特定类别的普遍信仰。你可以向我展示真相,但请尽量不要情绪化。 - miorel
我并不是要讽刺你。我强烈推荐在itunesu或者直接从网站下载斯坦福大学的iPhone应用程序开发课程(CS193p),苹果的开发人员经常会描述幕后的运作,当他们展示如何在IB中实现时。 - stefanB
4个回答

9

没有生成的代码,这是序列化。Interface Builder将对象树序列化到.xib文件中,您的应用程序将其反序列化回来。

当然,您也可以在代码中构建UI,只是需要更多的代码。在SDK的早期版本中,这甚至是必需的,因为Interface Builder还不可用。


有很多情况下手动设置界面会更容易,也有很多情况下使用IB更加方便。我的iPhone应用程序通常大部分是代码编写的。我的OS X应用程序视图几乎100%都是使用IB创建的,我无法想象如果要尝试在代码中复制它们会是多么的噩梦。 - kubi

2

我不使用界面构建器,但它对我来说非常有效。在XCode中创建新应用程序时,您可以选择“基于窗口的应用程序”,它将为您创建一个窗口和应用程序代理。应用程序代理具有applicationDidFinishLaunching方法,这实际上是您的“主”方法-您可以直接创建视图并将其添加到窗口中,或者您可以创建视图控制器,然后将它们的视图添加到窗口中。


2
I'm getting better, but one of the things I still find quite annoying about
the usual development model is that I really have no idea what the SDK is really 
doing behind the scenes to make the app "work" because Apple protects me from 
this. For example, when I make connections on interface builder, this presumably 
corresponds to code being generated somewhere... Where that code is and what it 
does and how it works are not obvious (to me).

你完全误解了。IB帮助你实例化控制对象,并通过IBOutlets将它们连接到代码逻辑,但这些都是真实的、活生生的对象,不是代码生成的,这是一个误解。这些代码被存档在Nib文件(运行时)和Xib文件(由IB在设计期间使用)中,包括Nib对象生命周期等更多内容,在https://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW8中详细说明。

当然,你可以完全绕过IB,但这绝对不适合初学者。


1

简短回答:是的

详细回答:

接口生成器并没有做太多工作,它只是为您生成XML。您可以在文本编辑器中打开XIB文件进行验证,而且Xcode甚至聪明到足以评估XML并在适当时给出编译器警告。

有很多自动生成iPhone项目的工具,其中最受欢迎的可能是Unity。还有一个开源项目Titanium供冒险家使用。这是一个需要自己承担的宏伟项目,因此我建议您先加入已经存在的开源项目并参与贡献,直到您对其非常熟悉,然后再尝试去重新发明更好的轮子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接