我是iOS开发的新手,并且有点担心这样的问题。
在我的iphone应用程序中,我正在使用这个真棒下拉视图控制器https://github.com/nmattisson/DropdownMenu 通过Cocoapods 。
我在自己的DropdownMenuController
中延长MyDropdownMenuController
:
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];
}
是否可以在不实际更新外部接口等的情况下覆盖此方法。
答案 0 :(得分:1)
您可以创建一个定义方法的类别
@interface DropdownMenuController (MichaelHacksIt)
- (void)drawOpenLayer;
@end
(无需为此定义@implementation,因为它已经实现了。)
然后你可以打电话给那个方法。
<强>声明:强> 顺便说一下,如果你想调用无证件的方法并且不关心苹果的批准,那就是你要走的路。在这种情况下,它没有任何问题,因为你不是在攻击Apple代码,Apple并不关心你是否破解了一些CocoaPods程序。但是,您依赖于第三方软件包的内部,因此下次更新该软件包时可能会出现问题......