我将在我的应用程序中使用 NSNotifications 来解耦代码。
我希望编译器在使用字符串作为通知名称时帮助我,即,如果我输入错误,我希望编译器告诉我。
为此使用普通字符串是行不通的,因为编译器不会知道如果我输入 "myNotificaion"
我的真正意思是 "myNotification"
。
一种方法是使用 #defines 或 const NSString 变量,但这意味着它们必须在文件中声明,无论是它们源自的类,还是全局包含的文件。
在它们源自的类中声明它们的问题是,它需要包含在监听通知的任何位置,因此创建了我不想要的耦合。
全局文件的问题在于它可能会变得又长又乱,并且会包含许多不相关的内容。
有没有一种方法可以在没有这种耦合或不整洁的情况下完成此任务?
最佳答案
不,据我所知,#defines 和 NSString 常量就在其中,您无法绕过必须将它们包含在任何需要访问字符串的文件中。
您可以为应用的不同部分创建头文件,例如,您可能有 JJDocumentNotifications.h
和 JJViewNotifications.h
。然后,您可以将它们 #import 到您的预编译头 (.pch) 文件中,因此该文件如下所示:
#import <Cocoa/Cocoa.h>
#import "JJDocumentNotifications.h"
#import "JJViewNotifications.h"
这样, header 将自动包含在目标中的所有文件中,您无需专门导入它们。
关于cocoa - 定义 NSNotification 使用的名称字符串,无需耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745360/