[英]objective-c ios: override implementation method of class
我是iOS开发的新手,对这样的问题有些困惑。
在我的iPhone应用程序中,我通过Cocoapods使用了这个很棒的下拉视图控制器https://github.com/nmattisson/DropdownMenu 。
我在自己的MyDropdownMenuController
扩展了DropdownMenuController
:
MyDropdownMenuController.h
#import "DropdownMenuController.h"
@interface MyDropdownMenuController : DropdownMenuController
@end
我想在控制器实例中重写此drawOpenLayer
( https://github.com/nmattisson/DropdownMenu/blob/master/DropdownMenu/DropdownMenuController.m#L126 )方法,但不幸的是,编译器说这是不可能的:
MyDropdownMenuController.m
- (void)drawOpenLayer {
// compiler says
// "No visible @interface for "DropdownMenuController" declares the selector "drawOpenLayer"
[super drawOpenLayer];
}
是否可以覆盖此方法而无需实际更新外部接口等?
您可以创建一个定义方法的类别
@interface DropdownMenuController (MichaelHacksIt)
- (void)drawOpenLayer;
@end
(无需为此定义@implementation,因为它已经实现了。)
然后,您可以只调用该方法。
免责声明:顺便说一句,如果您要调用未记录的方法并且不关心Apple的批准,那么这就是方法。 在这种情况下,它没有任何问题,因为您不是在破解Apple代码,并且Apple不在乎您是否在破解某些CocoaPods程序。 但是,您依赖于第三方程序包的内部,因此当您下次更新该程序包时可能会出现问题...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.