Khi sử dụng loại, bạn có thể ghi đè lên các phương pháp thực hiện với riêng bạn như vậy:Ghi đè phương thức qua Danh mục ObjC và gọi triển khai mặc định?
// Base Class
@interface ClassA : NSObject
- (NSString *) myMethod;
@end
@implementation ClassA
- (NSString*) myMethod { return @"A"; }
@end
//Category
@interface ClassA (CategoryB)
- (NSString *) myMethod;
@end
@implementation ClassA (CategoryB)
- (NSString*) myMethod { return @"B"; }
@end
Gọi phương thức "myMethod" sau bao gồm các loại lưới kết quả "B".
Cách dễ nhất cho việc triển khai Danh mục myMethod để gọi lớp A myMethod ban đầu là gì? Như gần như tôi có thể tìm ra, bạn phải sử dụng các cuộc gọi cấp thấp để có được móc phương thức ban đầu cho Class A và gọi nó, nhưng nó có vẻ như sẽ có một cách dễ dàng hơn về cú pháp để làm điều này.
Nó không nhất thiết là một cách 'hack'. Thời gian chạy Objective-C có lý do. Đó là những gì làm cho Objective-C vượt trội so với các ngôn ngữ biên dịch khác. –
Dựa trên kinh nghiệm của tôi, cắt theo đuổi, bạn muốn sử dụng JRSwizzle, như đã đề cập trong liên kết ở trên. Nó được chống đạn cho tôi. –
Liên kết với mã JRSwizzle: https://github.com/rentzsch/jrswizzle… Tôi đã đến để yêu thích điều này, phương pháp swizzling là rất mạnh mẽ bất cứ khi nào bạn muốn tinh chỉnh một thư viện bên thứ 3 để làm như bạn vui lòng! – LearnCocos2D