繁体   English   中英

Objective-C iOS:重写类的实现方法

[英]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

我想在控制器实例中重写此drawOpenLayerhttps://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM