NSString thực sự là một cụm lớp.Điều đó có nghĩa là vì nhiều lý do khác nhau bao gồm cả hiệu suất dựa trên nội dung và kích thước và hỗ trợ cầu nối miễn phí cho CFString khi bạn tạo một NSString bạn thực sự có thể nhận được một trong nhiều lớp riêng tư trả về YES cho isKindOf: khi bạn hỏi nó có phải là NSString hay không nó sẽ trả lời tất cả các phương thức trong lớp NSString. Nó giống như một Nghị định thư nhưng tất cả các đối tượng sẽ nói và làm và được NSString trong API công cộng.
Vì tài liệu nêu rõ NSString và CFString, khái niệm này là một mảng UTF16 unichar Nó có thể và sẽ sử dụng một biểu diễn bên trong khác, nơi nó thể hiện lợi thế cho việc triển khai. Thông thường hiệu suất đôi khi kích thước bộ nhớ. Nhưng bạn có thể dựa vào nó cho bạn một mảng C của unichar khi được hỏi hoặc bất cứ điều gì khác API hứa hẹn.
Đã có một thời gian dài để trưởng thành và được tinh chỉnh nội bộ trong gần như mọi bản phát hành.
Trong ngắn hạn, bạn có thể nghĩ về nó như được hỗ trợ bởi một mảng UTF16 unichar phần lớn phù hợp với mô tả của một chuỗi hợp lý trong tiêu chuẩn Unicode. Nhưng điều cần lưu ý là bạn thực sự không cần phải lo lắng những gì bên trong, chỉ những gì nó nói với bạn là bên trong.
Đây là một trong những triển khai tốt nhất của Unicode. Nếu bạn muốn có bức tranh đầy đủ hơn về cách thức hoạt động, bạn có thể xem (hầu hết) nguồn của CFString tại opensource.apple.com Đó là C và Core Foundation (hướng đối tượng C) và được cách điệu khá, vì vậy đừng mong đợi hiểu tất cả cùng một lúc.
NSString và CFString không có phương thức trả lại và tạo từ unichar. Hầu hết mọi người không nên cần hầu hết thời gian. Nếu bạn làm, hãy cẩn thận, chuẩn bị sẵn sàng để đọc rất nhiều và phạm sai lầm ngây thơ. Unicode là một chủ đề lớn. Xử lý nó một cách chính xác là một khoa học và một nghệ thuật ở cấp độ đó. Đó là một trong những lý do cho NSString. Nó xử lý rất nhiều thứ khó khăn để bạn không phải thường xuyên, trừ khi bạn muốn hoặc cần.
bạn đã quên @ trước "TestString"? – newacct
Tôi biết có điều gì đó không ổn ... cảm ơn! – micmoo