Cordova iOS:在 AppDelegate.m 中添加方法调用

Posted

技术标签:

【中文标题】Cordova iOS:在 AppDelegate.m 中添加方法调用【英文标题】:Cordova iOS : Add method call in AppDelegate.m 【发布时间】:2016-06-23 07:25:07 【问题描述】:

我正在为 ios 构建一个带有 cordova/ionic 的应用程序 由于多种原因,我们必须将代码放在 AppDelegate.m 的生成 application() 中。

我已经找到了一些类似的问题,但还没有答案。 https://***.com/questions/36792158/cordova-phonegap-ios-modify-generated-appdelegate

有没有办法通过一些重载或扩展来正确地做到这一点? 简单的答案是“我可以编辑 AppDelegate.m”,但由于它是项目中生成的文件,我不能这样做。

有什么想法吗?

【问题讨论】:

【参考方案1】:

也许您可以使用运行时在 AppDelegate.m 中添加新方法

for example 

@interface testViewController ()
    AppDelegate *m_appDelegate;


@implementation testViewController

- (void)viewDidLoad 
    [super viewDidLoad];

    m_appDelegate = [AppDelegate new];

    // add new method in AppDelegate.m
    [self addMethod];

    // call new method in AppDelegate.m
    [m_appDelegate performSelector:@selector(join)];




- (void)addMethod

        BOOL addSuccess = class_addMethod([AppDelegate class], @selector(join), (IMP)happyNewYear, "v@:");

    

    void happyNewYear(id self,SEL _cmd)
        NSLog(@"new method");

    

    -(void)join
        NSLog(@"in the join %s",__func__);
    

希望对你有帮助。

【讨论】:

以上是关于Cordova iOS:在 AppDelegate.m 中添加方法调用的主要内容,如果未能解决你的问题,请参考以下文章

AppDelegate.m (Cordova 2.3.0) 中不存在 didFinishLaunchingWithOptions 方法

Cordova 插件 - 将方法附加到 AppDelegate

PhoneGap / Cordova 将 appdelegate 变量传递给 JS

AppDelegate - 发送到实例的无法识别的选择器[关闭]

cordova支持私人HTTPS证书

cordova支持私人HTTPS证书