objective-c - XCode/Cocoa Objective-C - 几个问题

标签 objective-c xcode cocoa

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

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

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

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

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

先谢谢大家了!

最佳答案

Firstly, in XCode, when using the Interface builder, when I want to create a new object I drag the object to my 'assets'. However I can't specify methods or anything without manually creating a new class file.

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

请注意,您只能将 nib 对象连接到 socket 或操作。您不能也不应该指定任何随机方法 - IBOutletIBOutletCollectionIBAction 关键字的全部要点是在这些属性/方法由 Nib 使用的代码。

Is there any point using the interface builder's 'object'?

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

应用程序的委托(delegate)是您可能想要在 MainMenu 或 MainWindow nib 中创建的一个对象,如果您以这种方式构建应用程序(iOS 模板由于某种原因已不再使用它)。

The first app I built to test things with, I put most of the code in the AppDelegate class files. Research has shown me that the AppDelegate's purpose is simply handling application events like launching and closing. Was I wrong in putting the methods in this class?

也许吧。应用程序的委托(delegate)通常应该只处理与 NS/UIApplicationDelegate 协议(protocol)相关的业务。

另一方面,如果这样做有意义的话,可以将 Root View Controller 设置为应用程序的委托(delegate)(并且 NS/UIApplicationDelegate 实现代码是体积不要太大)。您必须回答的问题(并且只有您可以为您的应用程序回答)是您是否将 Root View Controller 设置为应用程序的委托(delegate),或者将应用程序的委托(delegate)设置为 Root View Controller 。如有疑问,请将它们分开。

Does it make any difference?

从长远来看,是的。创建 Big Ball of Mud 类非常容易,尤其是在应用程序委托(delegate)的类中,该类没有明确定义和明确划分的职责。尽快将炸药带到这样的类(class)。

Finally, if I have several class files created, each handling their own functionality with an interface built and linked to the classes, then what do I do with the 'main' file? It seems to me that the 'main' file and 'appdelegate' class files will be for the most case left as-is?

是的。它们是样板文件。

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

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

如果您需要的话,您的应用程序拥有一个委托(delegate)并不可耻,但如果您不需要,删除它以及您用于它的类可以消除将来在那里填充代码或使用它来存储 third-order globals 的诱惑。

关于objective-c - XCode/Cocoa Objective-C - 几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158611/

相关文章:

ios - objective-c 自定义比较:优先

objective-c - 具有运行到完成语义的 KVO - 这可能吗?

ios - NSMakeRange导致应用程序锁定;表现慢

cocoa - Mac OS X showWindow 问题 : NSWindow appears only once

swift - 使用 Cocoa for OS X、Xcode 9.3、Swift 4.1 复制 View 问题

ios - 在 UITextView 上以编程方式禁用 iOS8 Quicktype 键盘

ios - 如何在ios中使用证书

javascript - 通过 TVJS-tvOS 使用 API JSon 调用

ios - 如何组合过滤器

objective-c - NSString 内容因字符串中间的空字符而被截断