以下に示すように、定数オブジェクトと非定数NSString
オブジェクトには異なる型がありますが、これが翻訳が必要な文字列とそうでない文字列を区別する特に良い方法であるかどうかはわかりません。
おそらく Apple 独自のInternationalization Supportを使用する必要がありますが、個人的には、 Delicious Libraryの作成者 (の 1 人) によって文書化されているこちらのアプローチを使用します。
#import <Foundation/Foundation.h>
void foo(NSString *s) {
NSLog(@"Type of '%@' is %@", s, NSStringFromClass([s class]));
}
int main(int argc, const char **argv) {
@autoreleasepool {
NSString *s1 = [NSString stringWithFormat:@"A %@ string", @"formatted"];
NSString *s2 = @"A constant string";
foo(s1);
foo(s2);
}
return 0;
}
2013-09-17 16:34:05.667 test[9866:707] Type of 'A formatted string' is __NSCFString
2013-09-17 16:34:05.668 test[9866:707] Type of 'A constant string' is __NSCFConstantString