2009-11-16 1 views
2

코드 분리를 위해 앱에서 NSNotifications를 사용하려고합니다.커플 링하지 않고 NSNotification 사용을위한 이름 문자열 정의하기

컴파일러에서 문자열을 알림 이름으로 사용할 때 도움이 필요합니다. 예를 들어 실수로 입력 한 경우 컴파일러에서 알려주고 싶습니다.

"myNotificaion"을 입력하면 컴파일러에서 알 수 없으므로 정상적인 문자열을 사용하면 작동하지 않습니다. "myNotification"입니다.

이 작업을 수행하는 한 가지 방법은 #defines 또는 const NSString 변수를 사용하는 것이지만, 이는 파일에서 비롯된 클래스 나 원래 포함 된 클래스 또는 전역 적으로 포함 된 파일 중 하나에서 선언해야한다는 것을 의미합니다.

발신자가 클래스에서 선언하게되면 문제는 알림을 수신 할 때마다 포함시켜야하므로 원하지 않는 연결을 만듭니다.

글로벌 파일의 문제는 길어지고 지저분해질 수 있으며 많은 관련이없는 것들이 포함될 수 있다는 것입니다.

이 커플 링 또는 조급 함없이 이것을 수행 할 수있는 방법이 있습니까 ??

+0

코코아 프레임 워크는 NSString * const 변수를 사용합니다. – 0xced

답변

1

아닙니다. #defines 및 NSString 상수는 어디에서 왔으며 문자열에 대한 액세스가 필요한 파일에 이들을 포함하지 않아도된다는 것을 알고 있습니다.

예를 들어 JJDocumentNotifications.hJJViewNotifications.h 일 수 있으므로 앱의 여러 부분에 대한 헤더 파일을 만들 수 있습니다. 그런 다음 미리 컴파일 된 헤더 (.PCH) 파일로를 # import를 할 수 있으므로 파일은 다음과 같이 보입니다 : 대상의 모든 파일에

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

그 방법은, 헤더가 자동으로 포함됩니다 그리고 당신은 원 특별히 가져올 필요가 없습니다.

+0

네, 이것이 제 현재 해결책입니다. 그냥 다소 혼란 스러울 것 같다 ... 나는 더 우아한 방법이 될 것이라고 기대했다 : ( – Jasarien

+0

NSString 상수의 가장 큰 단점은 .h 파일 만 포함하면 "사용되지 않는 변수"에 대한 컴파일러 경고가 있다는 것입니다 하나의 알림을 보낼 수 있습니다. –