2010-10-21 35 views

Trả lời

2

Từ Tài liệu của Apple:

InitWithCoder mã hóa một đối tượng để lưu trữ. Một coder chỉ thị đối tượng làm như vậy bằng cách gọi encodeWithCoder: hoặc initWithCoder :. encodeWithCoder: hướng dẫn đối tượng mã hóa các biến mẫu của nó tới bộ mã hóa được cung cấp ...

InitWithNibName Trả về một đối tượng NSNib được khởi tạo thành tệp nib trong gói được chỉ định. Sau khi tệp nib đã được tải, đối tượng NSNib sử dụng bản đồ tài nguyên của gói để định vị các tài nguyên bổ sung được tham chiếu bởi ngòi bút. Nếu bạn đã chỉ định nil cho tham số gói, đối tượng NSNib tìm kiếm các tài nguyên đó trong nhóm được liên kết với lớp của chủ sở hữu tệp nib thay thế. Nếu tệp nib không có chủ sở hữu, đối tượng NSNib tìm kiếm các tài nguyên bổ sung trong gói chính của ứng dụng.

Trước đây được sử dụng để mã hóa các đối tượng riêng lẻ trong mã của bạn, mã sau được sử dụng để truy xuất tệp NSNib chứa các đối tượng tài nguyên.

5

initWithNibName: thường được sử dụng với đối tượng bộ điều khiển chế độ xem. Ý tưởng là bạn có một tệp NIB (hoặc XIB, cùng một thứ) có UIView (hoặc NSView) mà bạn đã thiết kế trong Trình tạo giao diện. Khi bộ điều khiển xem của bạn khởi chạy, nó có thuộc tính và ổ cắm view mà bạn sẽ phải tự vẽ - ngoại trừ việc bạn đã thiết kế nó trong IB. Vì vậy, hàm tạo này cho phép bạn kích hoạt đối tượng điều khiển mới và thông báo cho nó trong đó tệp NIB tìm kiếm dạng xem của nó. Thảo luận về hệ thống dây điện của bạn NIB chính nó để đảm bảo điều này là thành công là một chút vượt ra ngoài chủ đề ở đây.

initWithCoder: có một nhiệm vụ khác hoàn toàn. Khi bạn đã serialized một đối tượng sử dụng encodeWithCoder:, cuối cùng bạn sẽ cần phải unserialize (hoặc, "decode") dữ liệu đó để biến nó trở lại thành một đối tượng của lớp của bạn.

Dù sao, để tóm tắt lại: Bạn sẽ triển khai encodeWithCoder:initWithCoder: chỉ trên lớp học nếu bạn muốn đối tượng của mình hỗ trợ giao thức NSCoding. Bạn sử dụng initWithNibName: (thông thường bạn không tự mình thực hiện) khi bạn muốn kích hoạt một đối tượng có thể khởi tạo các thuộc tính của nó với các đối tượng được lưu trữ trong một tệp NIB.

Có một chế độ xem thực sự tuyệt vời của NSCodingover here.

+1

ah, có vẻ như Jordan đã đóng đinh nó, bên dưới ;-) –

1

Storyboard

Bạn nên thích -initWithCoder: để -initWithNibName vì chỉ có cựu được gọi khi tải một cái nhìn từ Storyboard.

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