Tôi đang bối rối khi xem tài liệu của Apple và đọc qua các mẫu thiết kế Cocoa. Trong tài liệu hướng dẫn của Apple cho copyWithZone:
, nó đọc:Ghi đè lên bản sao hoặc copyWithZone: hoặc cả hai?
Phương pháp này tồn tại để đối tượng lớp có thể được sử dụng trong các tình huống mà bạn cần một đối tượng mà phù hợp với các giao thức NSCopying. Đối với ví dụ , phương pháp này cho phép bạn sử dụng đối tượng lớp làm khóa cho đối tượng N2ictionary . Bạn không nên ghi đè phương thức này.
Đối copy
nó đọc:
Đây là một phương pháp thuận tiện cho các lớp học thông qua giao thức NSCopying . Một ngoại lệ được nêu ra nếu không có triển khai cho copyWithZone :.
NSObject không hỗ trợ giao thức NSCopying. Các lớp con phải hỗ trợ giao thức và thực hiện phương thức copyWithZone:. Phiên bản lớp con của phương thức copyWithZone: phải gửi thông báo đến siêu đầu tiên, để kết hợp triển khai của nó, trừ khi phân lớp xuống trực tiếp từ NSObject.
Trong các ví dụ trong thiết kế Cocoa Patterns, họ ghi đè copyWithZone:
và mutableCopyWithZone:
nhưng không ghi đè copy
khi phù hợp với các giao thức NSCopying
. Đó có phải là những gì tôi nên làm gì nếu tôi muốn sử dụng phân lớp tùy chỉnh của tôi trong một NSDictionary
làm khóa?
Hoặc tôi có ghi đè copy
không?
Tương tự, nếu tôi làm [myClass copy]
, điều đó có gọi số copyWithZone:
hoặc copy
cho lớp con tùy chỉnh của tôi không? Cảm ơn.