代码之家  ›  专栏  ›  技术社区  ›  Jasarien

为nsnotification的使用定义名称字符串,而不进行耦合

  •  2
  • Jasarien  · 技术社区  · 16 年前

    我将在我的应用程序中使用nsnotifications来分离代码。

    我想让编译器在使用字符串作为通知名称时帮助我,也就是说,如果我输入错误,我想让编译器告诉我。

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

    实现这一点的一种方法是使用defines或const nsstring变量,但这意味着必须在文件中声明这些变量,要么是它们来自的类,要么是一个全局包含的文件。

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

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

    有没有一种方法可以在没有这种耦合或不整洁的情况下实现这一点??

    1 回复  |  直到 16 年前
        1
  •  1
  •   Rob Keniger    16 年前

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

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

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

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