【问题标题】:Create iPhone app programmatically, in its entirety完全以编程方式创建 iPhone 应用程序
【发布时间】:2010-04-17 01:44:18
【问题描述】:

我最近对 ​​iPhone 应用程序开发产生了兴趣,所以我一直在看在线教程,还阅读了一本书,边做边尝试示例。

我正在变得越来越好,但我仍然对通常的开发模型感到非常恼火的一件事是,我真的不知道 SDK 在幕后究竟做了什么来让应用程序“工作”,因为 Apple 保护我免受此伤害。例如,当我在界面生成器上建立连接时,这可能对应于在某处生成的代码......该代码在哪里以及它的作用以及它是如何工作的(对我来说)并不明显。

所以我想知道,是否可以完全以编程方式创建 iPhone 应用程序?也就是说,在某个 main 方法中开始执行,然后以编程方式创建任何视图、注册事件侦听器等。如果是,那么有什么好的资源可以用于这样的事情?

【问题讨论】:

  • 如果一个 IPHONE APP 自己再生了怎么办?哦,那真的会烤你的面条。
  • Interface Builder 不生成代码。
  • 它生成的 XML 文件可以被视为代码,因此这一点值得商榷。
  • 与苹果“非信徒”的普遍看法相反,secret 没有发生任何事情,尤其是在 iphone 应用程序中。 Apple 不会从任何东西 protect 你,它会创建 easier 的东西,这样你就不必一遍又一遍地重复相同的任务,而是继续在你的应用程序中开发功能。您当然可以从头开始编写所有内容,包括 main 方法。
  • @stefanB 我认为您是 Apple 的“信徒”,我的问题不知何故触动了神经,因为您觉得有必要强调诸如秘密、保护和更容易之类的词。我在原帖中的用词反映了我在从事 iPhone 项目的短暂时间中获得的印象,并不意味着归因于任何特定类别的流行信念。欢迎您向我展示光明,但请尝试在没有情感参与的情况下这样做。

标签: iphone


【解决方案1】:

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

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

【讨论】:

  • 在很多情况下手动设置界面要容易得多,在很多情况下使用 IB 更容易。我的 iPhone 应用程序通常主要是代码。我的 OS X 应用程序的视图几乎是 100% IB,我无法想象尝试在代码中复制它们会是怎样的一场噩梦。
【解决方案2】:

我不使用界面生成器,它对我很有用。在 XCode 中创建新应用程序时,您可以选择“基于窗口的应用程序”,它将在您的新项目和应用程序委托中为您创建一个窗口。应用程序委托有方法 applicationDidFinishLaunching 这实际上是您的“主要”方法 - 您可以直接创建视图并将它们放入窗口,或者您可以创建视图控制器然后将它们的视图添加到窗口中。

【讨论】:

    【解决方案3】:
    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,但绝对不适合初学者。

    【讨论】:

      【解决方案4】:

      简短回答:是的

      长答案:

      界面生成器所做的只是为您生成 XML。您可以在文本编辑器中打开 XIB 来证明这一点,Xcode 甚至足够聪明,可以评估 XML 并在适当的时候给您编译器警告。

      自动生成 iPhone 项目的工具有很多,其中最受欢迎的可能是 Unity。还有用于冒险的开源项目Titanium。这是一个由你自己承担的崇高项目,所以我建议先投入帮助一个已经存在的开源项目,直到你精通它,然后再尝试重新发明一个更好的轮子。

      【讨论】:

        猜你喜欢
        • 2011-12-24
        • 2011-09-09
        • 2018-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多