2011-08-17 4 views
0

이 같은 것입니다 :Objective-C NSArray를 C 스타일 매크로에 포함 된 개체로 할당하는 방법이 있습니까? 내가하고 싶은 무엇

NSArray *someArray = [[NSArray alloc] initWithObjects: C_MACRO, nil]; 

NSStrings의 어떤 수를 나열하는 정의 #을 사용하는 외곽 파일을 인 C_MACRO 부분으로, 그래서 문자열 개체를 변경해야 할 때 하나의 파일에서 편리하게 할 수있는 배열을 채 웁니다. 지금까지는 이것이 불가능한 것 같습니다. 하지만 다시, 나는 초보자이다.

나를 계몽하는 사람은 누구입니까?

답변

5

매크로는 단지 텍스트 대체품입니다.

/* foo.h */ 
#define C_MACRO @"foo", @"bar" 

/* bar.m */ 
#import "foo.h" 
NSArray * someArray = [ [ NSArray alloc ] initWithObjects: C_MACRO, nil ]; 

참고 다른 매크로에서 매크로를 사용할 수 있습니다. 그래서

#define FOO_STR @"foo" 
#define BAR_STR @"bar" 
#define STR_LIST FOO_STR, BAR_STR 

또 다른 방법은 문자열을 공개 헤더 파일에 extern로하는 .m 파일에 할당하고, 선언하는 것입니다. 동일한 객체의 고유 한 인스턴스를 공유해야하는 경우 편리합니다.

/* foo.h */ 
extern NSString * const fooStr; 
extern NSString * const barStr; 

/* foo.m */ 
NSString * const fooStr = @"foo"; 
NSString * const BarStr = @"bar"; 
+0

도움에 감사드립니다! – Jog

0

왜 매크로 여야합니까? 다음은 마찬가지로 작동합니다.

NSString *words[] = {@"Hello", @"World!"}; // this can be a global 
... 
NSArray *array = [NSArray arrayWithObjects:words count:sizeof(words)/sizeof(*words)]; 
+0

와우, 왜 지구상에서이 다운 투표가 있었습니까? –

관련 문제