2

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

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

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

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

将它们声明在它们源自的类中的问题是,无论在哪里监听通知,都需要包含它,因此创建了我不想要的耦合。

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

有没有办法在没有这种耦合或不整洁的情况下做到这一点?

4

1 回答 1

1

不,据我所知,#defines 和 NSString 常量是它所在的位置,您无法避免将它们包含在需要访问字符串的任何文件中。

您可以为应用程序的不同部分创建头文件,例如,您可能JJDocumentNotifications.hJJViewNotifications.h。然后,您可以将它们#import 到您的预编译头文件 (.pch) 中,因此文件看起来像这样:

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

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

于 2009-11-17T01:46:08.430 回答