Tôi biết một vài quy tắc liên quan đến loại Objective-C:Điều gì xảy ra nếu hai danh mục ObjC ghi đè lên cùng một phương pháp?
- loại phương pháp không nên ghi đè lên các phương pháp hiện có (lớp hoặc chẳng hạn)
- Hai khác nhau loại thực hiện cùng một phương pháp cho cùng lớp sẽ dẫn đến hành vi undefined
tôi muốn biết những gì xảy ra khi tôi ghi đè lên một trong những phương pháp loại của riêng tôi trong t anh ấy cùng loại. Ví dụ:
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
Với các giao diện này được xác định, phương pháp nào sẽ được thực thi khi tôi chạy mã sau?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
Lưu ý: Với trình biên dịch của tôi, việc triển khai MyClass được ưu tiên, nhưng tôi không chắc chắn nếu điều đó được đảm bảo hay chỉ một hương vị cụ thể của hành vi không xác định.
Có đúng để ghi đè trong phương pháp Danh mục được khai báo và triển khai trong Danh mục siêu lớp không? – BergP