tôi đã đọc làm thế nào để thực hiện các phương pháp tư nhân trong Objective-C (Best way to define private methods for a class in Objective-C) và một câu hỏi hiện lên trong tâm trí tôi:phương pháp cá nhân sử dụng thể loại trong Objective-C: gọi siêu từ một lớp con
Làm thế nào để bạn quản lý thế nào để thực hiện các phương thức được bảo vệ, tức là các phương thức riêng có thể thấy được với các lớp con?
Giả sử tôi có MySuperClass với Danh mục chứa tất cả các phương thức riêng tư của nó và tôi muốn triển khai ghi đè MySubclass hoặc gọi siêu cho một trong các phương thức riêng tư MySuperClass. Điều đó có khả thi không (bằng cách sử dụng phương pháp Categories để thực hiện các phương thức riêng)?
Hãy xem một số mã này, ở dưới cùng có phương pháp được ghi đè.
// ===========================
// = File: MySuperClass.h
// = Interface for MySuperClass
// ===========================
@interface MySuperClass : Object
...
@end
// ===========================
// = File: MySuperClass.m
// ===========================
#import "MySuperClass.h"
// =================================
// = Interface for Private methods
// =================================
@interface MySuperClass (Private)
-(void) privateInstanceMethod;
@end
// =====================================
// = Implementation of Private methods
// =====================================
@implementation MySuperClass (Private)
-(void) privateInstanceMethod
{
//Do something
}
@end
// ================================
// = Implementation for MySuperClass
// ================================
@implementation MySuperClass
...
@end
// ===========================
// = File: MySubClass.h
// = Interface for MySubClass
// ===========================
@interface MySubClass : MySuperClass
...
@end
// ================================
// = Implementation for MySubClass
// ================================
#import MySubClass.h
@implementation MySubClass
//OVERRIDING a Super Private method.
-(void) privateInstanceMethod
{
[super privateInstanceMethod]; //Compiler error, privateInstanceMethod not visible!
//Do something else
}
@end
Hy vọng rằng ai đó đã tìm ra điều này.
Chúc mừng!
"May mắn là có ai đó đã tìm ra điều này." ... Vậy bạn đang hỏi gì? –
Sự nhầm lẫn ngôn ngữ, tôi nghĩ vậy. Đã sửa. – nall
Cảm ơn bạn đã không làm cho câu hỏi của tôi dễ dàng hơn cho mọi người hiểu. Tôi đã mắc sai lầm khi sử dụng từ "may mắn" khi tôi thực sự có nghĩa là "hy vọng". Xin lỗi và cảm ơn bạn rất nhiều! – Lio