将应用程序委托事件(例如:applicationWillTerminate)传递给我的自定义类。

5 浏览
0 Comments

将应用程序委托事件(例如:applicationWillTerminate)传递给我的自定义类。

我正在创建一个应用程序,我创建了自定义静态类,我希望在此类中捕获应用程序级别的事件,如(applicationDidBecomeActive,applicationWillResignActive和applicationWillTerminate)。

例如:

我想在我的自定义类中设置一个名为:IS_ACTIVE的变量,默认为false。

class CustomClass {

static var IS_ACTIVE: Bool = false;

}

当发生applicationDidBecomeActive事件时,我想将IS_ACTIVE设置为true,

目前我是通过"AppDelegate.swift"文件设置IS_ACTIVE,其中发生applicationDidBecomeActive事件,

但我想要的是applicationDidBecomeActive应该发生在我的自定义类中。

请在此事上帮助我。谢谢

0
0 Comments

问题原因:在这段对话中,问题出现的原因是在自定义类中添加了观察者以监听应用事件,但是并没有收到预期的结果。提问者错误地认为这个方法只适用于控制器类,而不适用于自定义类。

解决方法:在自定义类中添加观察者监听应用事件时,需要确保以下几点:

1. 使用正确的通知中心,如NotificationCenter.default。

2. 使用正确的选择器来处理事件,如#selector(self.appBecomeActive)。

3. 确保使用正确的通知名称,如NSNotification.Name.UIApplicationDidBecomeActive。

4. 确保没有遗漏参数,如object设置为nil。

5. 在自定义类的deinit方法中移除观察者,以避免内存泄漏。

根据我的了解,你应该在自定义类中添加观察者来监听应用事件,类似于下面的代码:

NotificationCenter.default.addObserver(self, selector: #selector(self.appBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)

记得在自定义类的deinit方法中移除观察者。

嗨,谢谢你的建议,但是并没有按照我预期的方式工作。我认为这个方法只适用于控制器类,而不适用于自定义类。

好的,使用默认值总是更好的:p

0