này là hoàn toàn ổn, và trên thực tế là một trong những ứng dụng chính của dataWithData:
-. Để tạo ra một bản sao bất biến của một đối tượng có thể thay đổi *
NSData
cũng phù hợp với các NSCopying
protocol, ** có nghĩa là bạn có thể thay vào đó hãy sử dụng [mutData copy]
. Sự khác biệt là dataWithData:
trả về một đối tượng bạn không sở hữu (nó được tự động phát hành), trong khi per memory management rules, copy
tạo một đối tượng có bộ nhớ mà bạn là chịu trách nhiệm. dataWithData:
tương đương có hiệu lực với [[mutData copy] autorelease]
.
Vì vậy, bạn có thể chọn dataWithData:
hoặc copy
, tùy thuộc vào yêu cầu của bạn trong suốt thời gian tồn tại của đối tượng kết quả.
* Điều này cũng áp dụng cho các phương pháp tương tự trong các lớp khác có phân lớp có thể thay đổi, ví dụ: +[NSArray arrayWithArray:]
.
** Xem thêm "Object Copying" trong Hướng dẫn về năng lực cốt lõi.
Nguồn
2011-07-26 22:01:33