cocoa - 定义 NSNotification 使用的名称字符串,无需耦合

标签 cocoa nsnotifications decoupling

我将在我的应用程序中使用 NSNotifications 来解耦代码。

我希望编译器在使用字符串作为通知名称时帮助我,即,如果我输入错误,我希望编译器告诉我。

为此使用普通字符串是行不通的,因为编译器不会知道如果我输入 "myNotificaion" 我的真正意思是 "myNotification"

一种方法是使用 #defines 或 const NSString 变量,但这意味着它们必须在文件中声明,无论是它们源自的类,还是全局包含的文件。

在它们源自的类中声明它们的问题是,它需要包含在监听通知的任何位置,因此创建了我不想要的耦合。

全局文件的问题在于它可能会变得又长又乱,并且会包含许多不相关的内容。

有没有一种方法可以在没有这种耦合或不整洁的情况下完成此任务?

最佳答案

不,据我所知,#defines 和 NSString 常量就在其中,您无法绕过必须将它们包含在任何需要访问字符串的文件中。

您可以为应用的不同部分创建头文件,例如,您可能有 JJDocumentNotifications.hJJViewNotifications.h。然后,您可以将它们 #import 到您的预编译头 (.pch) 文件中,因此该文件如下所示:

#import <Cocoa/Cocoa.h>
#import "JJDocumentNotifications.h"
#import "JJViewNotifications.h"

这样, header 将自动包含在目标中的所有文件中,您无需专门导入它们。

关于cocoa - 定义 NSNotification 使用的名称字符串,无需耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745360/

相关文章:

ios - 将 Controller 显示为 presentViewController 后 NSNotification 停止工作

cocoa - 以编程方式设置 OS X Lion 全屏桌面图像

ios - 应用程序 :didFinishLaunchingWithOptions: firing notification before destination controller is created

cocoa - 在 Cocoa 中将 PDF 转换为高分辨率图像的最佳方法

swift - 为 UIKeyboard 推送 UIViews

javascript - 如何处理或最小化 jquery 中的紧耦合

c# - 是否应将所有对象解耦

logging - 日志记录是否应该驻留在主要目的不是日志记录的类中?

macos - 使用什么 Cocoa 控件来选择目录

macos - 在 Swift 中向 NSWindow 添加多个 subview