gpt4 book ai didi

ios - Objective-C ios : override implementation method of class

转载 作者:行者123 更新时间:2023-11-29 03:00:27 29 4
gpt4 key购买 nike

我是 iOS 开发的新手,对这个问题有点困惑。

在我的 iPhone 应用程序中,我使用了这个很棒的下拉 View Controller https://github.com/nmattisson/DropdownMenu 通过 Cocoapods

我在我自己的 MyDropdownMenuController 中扩展了 DropdownMenuController:

MyDropdownMenuController.h

#import "DropdownMenuController.h"

@interface MyDropdownMenuController : DropdownMenuController

@end

我想在我的 Controller 实例中覆盖此 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)等的情况下覆盖此方法?

最佳答案

您可以创建一个定义方法的类别

@interface DropdownMenuController (MichaelHacksIt)

- (void)drawOpenLayer;

@end

(不需要为此定义@implementation,因为它已经实现了。)

然后你可以调用那个方法。

免责声明:顺便说一句,如果您想调用未记录的方法并且不关心苹果的批准,那么这就是您要走的路。在这种情况下,这并没有什么问题,因为你没有破解苹果代码,苹果也不在乎你是否破解了某些 CocoaPods 程序。但是,您依赖于第三方软件包的内部结构,因此下次更新该软件包时可能会出现问题...

关于ios - Objective-C ios : override implementation method of class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23372454/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com