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 内に存在します。これを修正する方法を知っている人はいますか?