저는 프로젝트에서 일부 문자열을 가지고 있고 모든 문자열을 상수라고하는 공통 파일에 넣고 싶습니다.Objective C에서 #define 또는 extern NSString * const를 사용하는 것이 더 좋습니다
(1 차 접근) constants.h에서, 내가 할 수있는 :
#define COMMON_STRING @"myString"
또는
constants.h에서 (2 접근)
extern NSString *const COMMON_STRING;
constants.m에서
는
NSString *const COMMON_STRING = @"myString";
어떤 접근 방식은 사용이 더 나은 이유는? 또는 우리는이에 대한 몇 가지 다른 더 좋은 방법이 있습니까? 그 후 통근자는 NSString * CONST의 COMMON_STRING 따르면
;
EDIT
메모리 관점에서 더 좋습니다. 하지만 어딘가에 나는 #define을 사용하여 문자열을 모든 어커런스에 삽입 할 것입니다. 컴파일러가 동일한 상수 문자열을 최적화하지 않는 한 메모리 사용량을 곱하면됩니다. 그렇다면 #define을 사용하지 않는 것이 맞습니까?제안 게시물에서 하나의 게시물은 구조체를 정의하고 다른 것은 비교를 설명하지만 매우 제한적일뿐입니다. 내가 기대하는 것이 아닙니다. 컴파일러가 동일한 상수 문자열 발생을 최적화하면 extern NSString * const COMMON_STRING을 사용하고 # COMMON_STRING을 정의 하시겠습니까?
해당 게시물 extern에 따르면 NSString * const COMMON_STRING; 메모리 관점에서 더 좋습니다. 하지만 어딘가에 나는 #define을 사용하여 문자열을 모든 어커런스에 삽입 할 것입니다. 컴파일러가 동일한 상수 문자열을 최적화하지 않는 한 메모리 사용량을 곱하면됩니다. 그렇다면 #define을 사용하지 않는 것이 맞습니까? – Apoorv
메모리와 동일합니다. 컴파일러는 @ "foo"라는 문자열을 하나만 만들 것입니다. 하드 코딩을 여러 번해도 상관 없습니다. 모든 용도는 그 불변의 문자열을 사용합니다.하나 또는 다른 것을 사용하는 비 메모리 사유가있을 수 있습니다. – chadbag