- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了我的第一个复杂的 OS X 应用程序。在研究它的过程中,我对如何使用实现 NSApplicationDelegate
协议(protocol)的类(Xcode 默认为 Cocoa 应用程序创建的类,即 MyApplicationAppDelegate.m/h
)。
在许多教程(和书籍)中,我看到人们创建一个 AppController
类来管理主要或通用应用程序任务。我更喜欢将通用任务直接添加到 MyApplicationAppDelegate 中,并根据我需要管理的模块创建特定的 Controller 。
例如,我将用于打开其他窗口(即打开首选项面板)的每个 IBAction
添加到 MyApplicationAppDelegate
中,每个函数与特定的没有严格连接主界面的模块/ Controller 和IBOutlet
。在 MyApplicationAppDelegate 中,我还添加了对应用程序中使用的 Controller 的每个引用。基本上就是这样。
我真的很困惑,因为我不确定这是否是好的设计。 MyApplicationAppDelegate
是否被设计用于其他目的?
我想要任何建议,如果可能的话,我想要任何您可能知道的有关 Cocoa 设计模式的文章。
最佳答案
默认情况下,Xcode 不会在 Cocoa 应用程序模板中创建应用程序委托(delegate)类。
我相信苹果只是引入了自动创建 <AppName>_AppDelegate
最近使用他们的项目模板进行了类(class),可能是 3.2 版本左右。
这就是为什么许多旧书籍和教程都要求您创建 AppController
类,因为旧的项目模板没有为您创建类。
您可以自由使用<AppName>_AppDelegate
作为您的主 Controller 类,Apple 将其添加到其模板中的原因是许多开发人员使用 NSApplicationDelegate
对象作为其主要应用程序 Controller 。
这本书名为 Cocoa Design Patterns,是了解更多有关 Cocoa 设计模式的优秀资源。 .
关于cocoa - NSApplicationDelegate类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254709/
我有一个简单的单窗口应用程序,上面有一个文件的放置目标。这很好用。但是,我还希望当它通过命令行启动时,它只是处理这些文件,而不是显示一个窗口。 NSApplicationDelegate 中是否有委托
在ApplicationDelegate.h中,我有: @interface appDelegate : NSObject - (IBAction)showPage:(id)sender; 在 bu
我正在尝试在 macOS Sierra 上的 Xcode 8(稳定版)中创建一个没有 Storyboard的 macOS 应用程序。但是,我的 AppDelegate 甚至没有启动。这是我的代码: i
我正在尝试在我的 appDelegate 类上加载一个 ViewController。像这样: class AppDelegate: NSObject, NSApplicationDelegate {
我一直在尝试使用 Swift 3,但我无法开始。以下代码正在编译,但它不记录任何内容。看起来 applicationDidFinishLaunching 没有被调用。我是否遗漏了一些关键部分? Sou
我创建了简单的 Cocoa 应用程序 (Mac OS X 10.6) 并且出现了入口点: int main(int argc, char *argv[]) { return NSApplica
我正在尝试在 macOS Sierra 上的 Xcode 8(稳定版)中创建一个没有 Storyboard的 macOS 应用程序。但是,我的 AppDelegate 甚至没有启动。这是我的代码: i
我正在将 iOS 应用程序移植到 OS X。我正在考虑使用 Apple 示例代码“AnimatedTableView”作为起点,但惊讶地发现它没有 NSApplicationDelegate。在 iO
main.m #import int main(int argc, char *argv[]) { return NSApplicationMain(argc, (const char *
我的 Swift 3、Xcode 8.2 MacOS 应用程序通过 Web 服务调用加载多个表。由于这些表由我的七个 View Controller 中的一个或多个使用,因此我将它们放置在 AppDe
我需要访问应用程序委托(delegate)中的一些值,以使用 Sparkle 修改(和测试)更新过程。所以问题是,如何在我的 UI 测试中从 XCUIApplication 访问 NSApplicat
我正在尝试使用 objc_getProtocol() 函数来获取对表示 NSApplicationDelegate 协议(protocol)的结构的引用: Protocol *protocol = o
有人可以给我举一个这个工作的例子吗?我只想通过 AppleScript 设置属性值。我已经浏览了所有可编写脚本的示例,它们的设置不同。
我有一个用 Xcode 编写的非常基本的 Cocoa 应用程序,我正在尝试使用简单的 AppleScript 脚本访问我的应用程序委托(delegate)的属性: tell application "
我正在尝试编写一个简单的 Objective-C 应用程序:我只想要一个能够在状态栏中显示单词并允许通过 AppleScript 更新该单词的应用程序。说实话,我对 AppleScript 知之甚少,
我想打开一个文件,将其拖放到应用程序图标上。当我这样做时,我的应用程序被打开,因此文件扩展名定义明确并且与我的应用程序相关。但是 application:openFile: 函数永远不会被调用。所以我
嘿!我将我的 Mac 应用程序设置为在浏览器(如 Safari)中调用 myApp://协议(protocol)启动,但当应用程序被该协议(protocol)调用时,我似乎无法执行操作。委托(dele
我有一个 Mac OS X 应用程序,它实现了 -(void)application openFiles: 方法来响应应用程序图标上的拖动文件。 我在目标信息设置的文档类型部分有一个允许的文件类型列表
我是一名优秀的程序员,十分优秀!