Tôi biết rằng khi bạn viết phương thức initWithCoder của một lớp con của đối tượng thực hiện NSCoding bạn phải gọi siêu initWithCoder
(thay vì super init
), nhưng tôi có phải gọi super encodeWithCoder
trong việc triển khai encodeWithCoder không?Có cần gọi [super encodeWithCoder] khi subclassing một đối tượng thực hiện NSCoding không?
15
A
Trả lời
24
Nếu bạn kế thừa từ một lớp học có hỗ trợ mã hóa, nó là thường adviseable để sử dụng trong phương pháp [super encodeWithCoder:]
encodeWithCoder:
của bạn, càng nhiều càng tốt [super initWithCoder:]
được sử dụng trong phương pháp initWithCoder:
.
Tài liệu:NSCoding Protocol Reference
tham khảo:http://www.cocoadev.com/index.pl?NSCoder
nếu lớp kế thừa từ một lớp mà phù hợp với (NSObject không phù hợp) thì bạn nên bao gồm các [encodeWithCoder:] phương pháp.
// <NSCoding> protocol methods
-(void)encodeWithCoder:(NSCoder*)coder
{
[super encodeWithCoder:coder];
/*
[coder encodeObject: theNSStringInstanceVariable];
[coder encodeObject: theNSDictionaryInstanceVariable];
[coder encodeValueOfObjCType:@encode(BOOL) at:&theBooleanInstanceVariable];
[coder encodeValueOfObjCType:@encode(float) at:&theFloatInstanceVariable];
*/
}
Các vấn đề liên quan
- 1. Có ổn không khi gọi [super loadView]?
- 2. Python - Tồn tại một hàm được gọi khi một đối tượng không thực hiện một hàm?
- 3. Tôi có cần gọi [super init] hoặc [super initWithCoder], v.v. cho NSObject
- 4. Sử dụng NSCoding trên lớp con của lớp tùy chỉnh
- 5. Powermock, Mockito nullpointerexception khi gọi super() JDialog
- 6. Có thể tạo một thể hiện của một đối tượng trong Java mà không cần gọi hàm tạo không?
- 7. subclassing models.Manager
- 8. cần tây - chức năng gọi khi thực hiện công việc
- 9. Đề cập đến "this" trong khi gọi super constructor?
- 10. NSInvocation: đối tượng không thực hiện methodSignatureForSelector
- 11. Nên một đối tượng thực hiện một iterator hoặc chứa một đối tượng thực hiện một iterator
- 12. Điều gì xảy ra với đối tượng NSArray khi mã hóa?
- 13. iPhone: [super viewDidUnload] gọi số
- 14. Có cần đóng một đối tượng Adodb.recordset trước khi đặt nó thành không?
- 15. SubClassing UILabel
- 16. Thực hiện đối tượng Trì hoãn mà không cần sử dụng jquery
- 17. Đối tượng nào mô phỏng khi thực hiện TDD
- 18. Có ai thực sự sử dụng git super/subprojects không?
- 19. Có thể tạo một đối tượng giả lập thực hiện nhiều giao diện với EasyMock không?
- 20. Khi nào tôi nên gọi save() trên một thể hiện của đối tượng miền trong Grails?
- 21. Làm thế nào để WCF deserialization nhanh chóng đối tượng mà không cần gọi một constructor?
- 22. AutoFixture có thể thực hiện một đại biểu tại thời điểm tạo đối tượng không?
- 23. Thực hiện IXmlSerializable trên một đối tượng bộ sưu tập
- 24. Bạn có thể giả lập một đối tượng thực hiện một giao diện VÀ một lớp trừu tượng không?
- 25. JAXB không gọi setter khi unmarshalling đối tượng
- 26. tạo một đối tượng trước khi cuộc gọi siêu trong java
- 27. Không thể thực hiện URL khi gọi dịch vụ WCF có xác thực Windows
- 28. Khi thực hiện một Process.Start() bạn có cần bọc nó trong quá trình sử dụng không?
- 29. Obj-C đối tượng đệm tròn, thực hiện một?
- 30. Ít nhất một đối tượng phải thực hiện IComparable
Cảm ơn bạn rất nhiều :) – XaitormanX
@XaitormanX Xin chào, bạn của tôi! :-) –