Trước hết, xin lỗi cho câu hỏi đơn giản này. Nhưng tôi cần phải hiểu những gì đang xảy ra.Mục tiêu C - Vượt qua giá trị và vượt qua tham chiếu
Tôi nghĩ đầu ra phải là upper case string
. Nhưng nó xuất hiện là UPPER CASE STRING
.
- (void)test
{
NSString *stringVar = @"UPPER CASE STRING";
[self changeString:stringVar];
NSLog(@"value after changed : %@", stringVar);
}
- (void)changeString:(NSString*)string
{
string = [string lowercaseString];
}
Điều gì đang xảy ra và cách khắc phục?
Chỉ cần chắc chắn rằng, ARC sẽ xử lý xử lý ngay cả trong trường hợp này một cách minh bạch bộ nhớ, phải không? –
Kính gửi Greg, Điều này có nghĩa Mục tiêu C theo mặc định sử dụng cơ chế truyền giá trị đúng không? –
@JoachimIsaksson: Có, ARC xử lý việc quản lý bộ nhớ một cách chính xác (trình biên dịch sẽ cảnh báo bạn nếu nó không thể tìm ra bạn đang làm gì). –