从 AppDelegate 我通过协议与 MyViewController 进行通信。所以当这个方法在 AppDelegate.m 中被调用时:
- (void)thisMethodGetsCalled:(CustomData *)data {
//Do stuff
//Then call method via Protocol
[_exampleDelegate exampleMethod:data];
}
它在 MyViewController.m 中调用此方法
- (void)thisMethodGetsCalledInsideViewController:(CustomData *)data {
//Do stuff with data
}
//ExampleDelegate.h
#import <Foundation/Foundation.h>
@protocol SMMessageDelegate <NSObject>
- (void)thisMethodGetsCalledInsideViewController:(CustomData *)data;
@end
一切正常,正如预测的那样,“thisMethodGetsCalledInsideViewController”在“thisMethodGetsCalled”之后被调用。假设 MyViewController 从未被实例化,那么“thisMethodGetsCalledInsideViewController”永远不会被调用。然而 MyViewController 被实例化并随后被解雇:
[self dismissViewControllerAnimated:YES completion:nil];
调用“thisMethodGetsCalled”时,我的应用程序崩溃。它尝试调用“thisMethodGetsCalledInsideViewController”,但该方法驻留在 MyViewController 中,该方法已被解除。有人知道如何解决这个问题吗?