2009-11-16 63 views
2

我将在我的应用程序中使用NSNotifications来解耦代码。定义不带耦合的NSNotification用法的名称字符串

我希望编译器在使用字符串作为通知的名称时可以帮助我,也就是说,如果我输错一个字符串,我希望编译器告诉我。

对此使用普通字符串将无法正常工作,因为编译器将不知道如果我输入"myNotificaion",我的意思是"myNotification"

这样做的一种方法是使用#defines或const NSString变量,但这意味着它们将不得不在文件中声明,或者是它们源自的类或全局包含的文件。

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

全局文件的问题是,它可能会变得漫长而杂乱,并将包含许多不相关的东西。

有没有办法做到这一点没有这种耦合或untidiness?

+0

Cocoa框架使用NSString * const变量。 – 0xced 2009-11-18 10:14:23

回答

1

不,据我所知,#defines和NSString常量是它的位置,你不能在任何需要访问字符串的文件中包含这些常量。

您可以为应用程序的不同部分创建头文件,例如,您可能有JJDocumentNotifications.hJJViewNotifications.h。然后,您可以#IMPORT他们进入你的预编译的头(.PCH)文件,因此该文件看起来是这样的:

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

这样一来,头会自动包含在所有的文件在你的目标和你赢了不需要专门导入它们。

+0

是的,这是我目前的解决方案。它似乎相当adhoc ...我希望有一个更优雅的方式来做到这一点:( – Jasarien 2009-11-18 00:09:05

+0

NSString常量的最大缺点是,如果我只包含.h文件,有关于“未使用的变量”的编译器警告能够发送单个通知。 – 2009-12-10 22:02:36

相关问题