在没有耦合的情况下为NSNotification使用定义名称字符串

时间:2009-11-16 22:48:10

标签: cocoa nsnotifications decoupling

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

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

为此使用普通字符串将不起作用,因为如果我输入"myNotificaion"我真正想要"myNotification",编译器就不会知道。

执行此操作的一种方法是使用#defines或const NSString变量,但这意味着必须在文件中声明它们,无论是它们来自哪个类,还是全局包含的文件。< / p>

在它们来自的类中声明它们的问题是它需要包含在收听通知的任何地方,因此创建了一个我不想要的耦合。

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

有没有办法在没有这种耦合或不整洁的情况下实现这一目标?

1 个答案:

答案 0 :(得分:1)

不,不是我所知道的,#define和NSString常量就是它所处的位置,你无法在需要访问字符串的任何文件中包含这些常量。

您可以为应用的不同部分创建标题文件,因此您可能拥有JJDocumentNotifications.hJJViewNotifications.h。然后你可以#import到你的预编译头(.pch)文件,所以文件看起来像这样:

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

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