Bạn nên khai báo chuỗi hằng của bạn như sau:
NSString * const kSomeConstantString = @""; // constant pointer
thay vì:
const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";
Cái trước là một con trỏ không đổi đến một NSString
đối tượng, trong khi cái sau là con trỏ tới một NSString
đối tượng không đổi .
Việc sử dụng NSString * const
ngăn không cho bạn gán lại kSomeConstantString để trỏ đến một NSString
đối tượng khác .
Phương thức này isEqualToString:
dự kiến một đối số của kiểu NSString *
. Nếu bạn chuyển một con trỏ tới một chuỗi không đổi ( const NSString *
), bạn đang truyền một cái gì đó khác với mong đợi.
Bên cạnh đó, NSString
các đối tượng đã là bất biến, vì vậy làm cho chúng const NSString
là vô nghĩa.