1

很抱歉这个愚蠢的帖子,但我是 Objective-C 编程和 Cocoa 的新手,有几个问题我找不到答案,我希望有人能启发我。

首先,在 XCode 中,当使用 Interface builder 时,当我想创建一个新对象时,我将该对象拖到我的“资产”中。但是,如果不手动创建新的类文件,我就无法指定方法或任何东西。使用界面构建器的“对象”有什么意义吗?

我为测试事物而构建的第一个应用程序,我将大部分代码放在 AppDelegate 类文件中。研究表明,AppDelegate 的目的只是处理应用程序事件,例如启动和关闭。我把方法放在这个类中是错的吗?它有什么不同吗?

最后,如果我创建了几个类文件,每个类文件都通过构建并链接到类的接口来处理自己的功能,那么我该如何处理“主”文件?在我看来,'main' 文件和 'appdelegate' 类文件在大多数情况下会保持原样吗?

我希望这是有道理的。对于这些听起来很愚蠢的问题,我再次感到抱歉,但我找不到任何答案。

提前谢谢大家!

4

3 回答 3

2

首先,在 XCode 中,当使用 Interface builder 时,当我想创建一个新对象时,我将该对象拖到我的“资产”中。但是,如果不手动创建新的类文件,我就无法指定方法或任何东西。

你当然可以。只需使用检查器设置对象的类。

请注意,您只能将 nib 对象连接到插座或操作。您不能指定任何随机方法,也不应该指定 - 、 和 关键字的全部意义在于IBOutletIBOutletCollection代码IBAction中声明这些属性/方法由 nib 使用。

使用界面构建器的“对象”有什么意义吗?

是的,但很少。通常您在代码中创建对象并将插座连接到它们。

应用程序的委托是您可能希望在 MainMenu 或 MainWindow nib 中创建的一个对象,如果您以这种方式构建您的应用程序(iOS 模板由于某种原因已更改为远离它)。

我为测试事物而构建的第一个应用程序,我将大部分代码放在 AppDelegate 类文件中。研究表明,AppDelegate 的目的只是处理应用程序事件,例如启动和关闭。我把方法放在这个类中是错的吗?

大概。应用程序的委托通常应该只处理与NS/UIApplicationDelegate协议相关的业务。

另一方面,可以将根视图控制器设置为应用程序的委托,如果这样做有意义的话(并且NS/UIApplicationDelegate实现代码不是太多)。您必须回答的问题(只有您可以为您的应用程序回答)是您是让根视图控制器成为应用程序的委托还是应用程序的委托成为根视图控制器。如果有疑问,请将它们分开。

它有什么不同吗?

长期,是的。创建一个Big Ball of Mud类非常容易,尤其是在应用程序的委托类中——没有明确定义和明确界定的职责。尽快将炸药带到这样的班级。

最后,如果我创建了几个类文件,每个类文件都通过构建并链接到类的接口来处理自己的功能,那么我该如何处理“主”文件?在我看来,'main' 文件和 'appdelegate' 类文件在大多数情况下会保持原样吗?

是的。它们是样板。

如果您没有在应用程序的委托中编写任何代码(或者已经删除了您放入新的和更好描述的类中的所有内容),这样剩下的就是空的方法体或根本没有,您可以安全地删除应用程序的代表。如果您改变主意,以后随时可以再次创建它。

请注意,如果您删除应用程序委托类,您还应该更改 main.m 文件 - 或 MainMenu/MainWindow nib,如果有的话 - 不引用它。如果您的UIApplicationMain调用(或任何其他代码)引用了不存在的类,您的应用程序将不会构建,如果您的 MainMenu/MainWindow 笔尖(或任何其他笔尖)引用不存在的类,它将崩溃.

如果你需要,你的应用程序有一个委托并不可耻,但如果你不这样做,删除它和你用于它的类消除了未来在其中填充代码或使用它来存储三阶全局变量的诱惑。

于 2012-04-15T23:32:12.000 回答
1
  1. 在界面构建器中使用对象的目的是将对象的方法连接到 UI 元素。

  2. 这部分取决于您的方法正在做什么,但在大多数情况下,应用程序委托类将被单独放置。这不是实际要求(您的程序可以以任何一种方式工作),但它是常见的做法,因为它通常会创建更易于维护的代码。应用程序委托应该只处理应用程序事件(使用其他类来执行任何复杂的逻辑或繁重的工作)。

  3. “主”文件很可能不会改变。我想不出任何理由这样做,但我不会排除某些高级案例。

于 2012-04-15T01:05:11.130 回答
1

老实说,我只在 IB 中使用过 Object 一次,当时我希望一个单独的对象具有一些 UI 绑定。

关于应用程序委托和主文件,是的,大多数情况下您将保持原样。但是,如果您尝试做一些除了测试应用程序之外的事情,您将需要处理打开的事件,例如,连接到服务器、要求用户进行评论、增加一些启动计数器等等......这些只是示例!

主文件我建议你不要管它,使用提供的面向对象工具。您应该有一个视图控制器层次结构,将您的视图与数据隔离,并使用视图控制器在视图和模型之间进行通信。如果您想了解有关如何组织应用程序的更多信息,请阅读MVC 。

于 2012-04-15T01:09:01.840 回答