Learn Objective C on the Mac phần 9

họ sống (nhận tin nhắn và làm công cụ), làm cho bạn bè (thông qua thành phần và lập luận với các phương pháp), và cuối cùng chết (được trả tự do) khi cuộc sống của họHãy chắc chắn rằng bạn hiểu lý do tại sao các kết quả đi ra theo thứ tự này. Và bây giờ nó rất dễ dàng để xác định một chương trình tìm thấy sublists danh sách. | CHAPTER 15 File Loading and Saving 273 We ll be using NSKeyedArchiver to do all of the work of archiving our objects into an NSData. The keyed archiver as its name implies uses key value pairs to hold an object s information. Thingie s -encodeWithCoder encodes each instance variable under a key that matches the instance variable name. You don t have to do this. You could encode the name under the key flarblewhazzit and nobody would care. Keeping the key names similar to the instance variable names makes it easy to know what maps to what. You re welcome to use naked strings like this for your encoding keys or you can define a constant to prevent typos. You can do something like define kSubthingiesKey @ subThingies or you can have a variable local to the file like static NSString kSubthingiesKey @ subThingies Notice that there s a different encodeSomething forKey for each type. You need to make sure you use the proper method to encode your types. For any Objective-C object type you use encodeObject forKey When you re restoring an object you ll use decodeSomethingForKey methods - id initWithCoder NSCoder decoder if self super init decoder decodeObjectForKey @ name decoder decodeIntForKey @ magicNumber decoder decodeFloatForKey @ shoeSize decoder decodeObjectForKey @ subThingies return self initWithCoder initWithCoder is like any other init method. You need to have your superclass initialize things before you can do your stuff. You have two ways to do this depending on what your parent class is. If your parent class adopts NSCoding you should call super i nitWithCoder decoder . If your parent class does not adopt NSCoding then you just call super init . NSObject does not adopt NSCoding so we do the simple init. When you use decodeIntForKey you pull an int value out of the decoder. When you use decodeObjectForKey you pull an object out of the decoder recursively using initWithCoder on any embedded objects. Memory

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.