【发布时间】:2014-04-29 18:26:03
【问题描述】:
我是 iOS 开发的新手,有点被这样的问题困扰。
在我的 iphone 应用程序中,我正在使用这个很棒的下拉视图控制器 https://github.com/nmattisson/DropdownMenu通过 Cocoapods。
我在自己的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];
}
是否可以在不实际更新外部接口等的情况下覆盖此方法?
【问题讨论】:
-
你不能修改 DropdownMenuController.h 文件来声明那个方法吗?
-
你可以在不调用
[super drawOpenLayer]的情况下实现drawOpenLayer,但当然你会失去任何功能,你需要自己实现它。 -
@rdelmar 我不想修改 DropdownMenuController.h 因为它是一个 cocoapod 包
标签: ios objective-c class inheritance overriding