2010-09-13 32 views
7

Làm cách nào để lấy NSObject mà tôi đã đặt tất cả các thuộc tính rồi sao chép vào một khối bộ nhớ khác mà một mảng có thể sử dụng để tôi có thể sử dụng lại bản gốc?Tạo bản sao của NSObject

Trả lời

7

Tóm lại, bạn không biết.

Nếu bạn muốn đặt đối tượng vào một mảng và sau đó tạo đối tượng mới, hãy làm chính xác điều đó; addObject: vào mảng và alloc/init hình mới.

Nếu bạn đang hỏi cách sao chép một đối tượng vào, ví dụ: một khối ngẫu nhiên malloc() ở đâu đó - ở giữa một mảng - thì đó là một vấn đề rất khác. Nó có thể về mặt kỹ thuật được thực hiện, nhưng về cơ bản không ai làm như vậy vì các khung công tác và thời gian chạy không được thiết kế cho điều đó.

Nếu không biết thêm về nhu cầu cụ thể của bạn, bạn không thể đi vào chi tiết hơn.

+0

Đây là một chủ đề mà tôi bắt đầu mà tc đã giúp tôi với nhưng không giúp tôi tất cả các cách: http://stackoverflow.com/questions/3697072/well-using-nsxmlparser-the-values-inside-an- array-are-all-set-to-the-last-entry – Chris

+0

OK - Tôi thấy câu hỏi thực sự của bạn là gì. – bbum

+0

Tôi đã tìm ra tất cả bây giờ, nhưng bây giờ tôi đang bị rò rỉ một đối tượng ngày. – Chris

7

Tạo bản sao của đối tượng được thực hiện bằng cách gửi thông báo copy. Điều này chỉ hoạt động trên các cá thể của các lớp thực hiện giao thức NSCopying.

Đọc Implementing Copy để có tổng quan tốt. Sau đó đọc Implementing NSCopying Considered Harmful để biết thêm thông tin cơ bản.

+0

Điều đó không trả lời được câu hỏi; anh ta muốn byte-sao chép đối tượng vào một mảng và sau đó tái sử dụng bản gốc. – bbum

+0

Liên kết Apple không hoạt động nữa – AsifHabib

+0

Điều này trả lời câu hỏi vì OP không cụ thể về "bản sao byte". Đây có vẻ là [tài liệu cập nhật] (https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/CopyFunctions.html#//apple_ref/doc/uid/20001149-CJBEJBHH) về việc sao chép (điều lạ lùng là [phiên bản mới nhất] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/RevisionHistory.html) được cho là có trước câu trả lời này). – jkoreska

Các vấn đề liên quan