NSString *myString = @"sample string";
NSString *newString = [myString copy];
Nếu tôi đặt điểm ngắt sau hai dòng này, con trỏ cho myString giống như con trỏ cho newString.Sao chép NSString không sao chép?
WTF? Không phải là bản sao NSString phải trả về một con trỏ đến một đối tượng mới? Hoặc tôi thiếu một cái gì đó cơ bản về cách sao chép là nghĩa vụ phải làm việc?
tôi không biết câu trả lời nhưng nếu bạn thay đổi mystring sau đó cả hai đều có địa chỉ khác ... đến khi nội dung của chuỗi là giống nhau đó là trong cùng một địa chỉ ... –
Trước tiên, bạn đã không thực sự gọi sao chép, bạn gọi là stringWithString :. Thứ hai, vì chuỗi không thay đổi, trình biên dịch và thời gian chạy thực hiện tối ưu hóa. Thông thường các đối tượng không thay đổi sẽ được trả lại với số lượng tham chiếu bổ sung thay vì tạo đối tượng mới thực. –
Làm đẹp cacao - không sao chép dữ liệu khi không cần thiết ... – stefanB