Tôi có 2 câu hỏi mới:Are NSStrings lưu trữ trên đống hoặc trên stack và là những gì một cách tốt để khởi tạo một
1) Xem xét dòng này:
NSString *myString = [[NSString alloc] initWithString: @"Value"];
Có hai điều tôi đã học được, nhưng tôi muốn xác nhận: Như tôi đã học, thông báo "phân bổ" chỉ ra rằng cá thể của NSString sẽ được lưu trữ trong bộ nhớ "heap". Tôi cũng hiểu rằng các biến nguyên thủy như "ký tự" được lưu trữ trong bộ nhớ "ngăn xếp".
Điều này có nghĩa rằng:
- trường hợp của NSString được lưu trữ trong bộ nhớ heap;
- VÀ đối tượng này có con trỏ iVar (khi phương thức initWithString được gọi) vào chuỗi "Giá trị" nguyên thủy "ký tự", nằm trong bộ nhớ ngăn xếp? Tính năng này hoạt động như thế nào?
Câu hỏi thứ hai là trực tiếp liên quan và gây cho tôi một tình trạng khó xử cá nhân (có lẽ vì tôi là thiếu một điểm): 2) Trong hai phương pháp bạn sẽ tham khảo ý kiến và lý do tại sao ?:
NSString *myString = [[NSString alloc] initWithString: @"Value"];
NSString *myString = @"Value";
Nếu câu hỏi đầu tiên của tôi được xác nhận, cả hai cách tiếp cận nên "cuối cùng" trỏ tới ký tự được lưu trữ trong bộ nhớ ngăn xếp. Do đó, tôi không thực sự thấy mục đích của việc sử dụng tùy chọn đầu tiên và bị làm phiền với số lượng giữ lại.