如何在应用程序委托中使用视图控制器中的函数?

How to use a function from the view controller in the app delegate?

我有一个通过蓝牙连接到设备的应用程序。

我希望应用程序在应用程序委托方法中发送指示应用程序将要关闭的命令:(void)applicationWillTerminate:(UIApplication *)application {

您应该创建一个与视图控制器和应用程序委托分开的 class 来处理 BLE 通信。这样,视图控制器和应用委托都可以访问并为您的应用提供更好的 "separation of concerns"。这个新的 class 可能作为一个单例工作得很好。

一个字:NSNotificationCenter

我不确定您需要将数据设置为什么,因为您无法通过 NSNotificationCenter 无缝传递数据;然而,无论如何你都会在你的 UIApplicationDelegate 中解决这个问题,所以你为什么不能直接在视图控制器中做到这一点。

在你的情况下,不需要在你的应用程序委托中做任何事情,因为这个通知允许你的视图控制器充当一个迷你应用程序委托(因为你可以获得终止状态等)。

因此...

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(TXdata:) name:UIApplicationWillTerminateNotification object:nil];
}

- (void)TXdata:(NSString *) data {
    NSString *newData = data;
    if (newData == nil) {
        newData = ... // Figure out what your data should be here.
    }
    //do whatever with your data here.
}

我引用:

UIApplicationWillTerminateNotification

Posted when the app is about to terminate.

This notification is associated with the delegate applicationWillTerminate: method. This notification does not contain a userInfo dictionary.