int main(int argc, char *argv[]) {
@autoreleasepool {
const int x = 1;
const NSMutableArray *array1 = [NSMutableArray array];
const NSMutableString *str1 = @"1";
NSString * const str2 = @"2";
// x = 2; compile error
[array1 addObject:@"2"]; // ok
// [str1 appendString:@"2"]; // runtime error
// Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:'
// str2 = @"3"; compile error
}
}
내 질문은 왜 array1 addObject가 유효하고 str1 appendString이 금지되는 이유입니까? Objective-c의 const 키워드
이 타격을 참조하십시오NSMutableString *f2(const NSMutableString * const x) {
[x appendString: @" world!"];
return x;
}
int main(int argc, char *argv[]) {
@autoreleasepool {
NSMutableString *x = [@"Hello" mutableCopy];
NSLog(@"%@", f2(x));
}
return 0;
}
을하고이 코드가 법적 왜, 어떻게 C에서처럼 'const를'키워드를 사용하여 객체는 불변 할 수 ++?
============================= @https://softwareengineering.stackexchange.com/questions/151463/do-people-use-const-a-lot-when-programming-in-objective-c