メモリ警告がトリガーされると、アプリは不要になったすべてのオブジェクトを削除しようとします。これにより、おそらく最初の UIViewController からリスナーが削除されます。
NSNotificationCenter の問題は、リスナーがアクティブかどうかを確認する簡単な方法がないことです。
この状況が NSNotification セットアップの使用に適しているかどうかはわかりません。どのメッセージがどのビューコントローラーに送信されるかを簡単に制御できなくなります。
おそらく、このセットアップの方が簡単です (そしておそらくメモリセーフです)。最初の UIViewController オブジェクトへの参照を保持します
//
// SecondViewController.h
// test
//
//
#import <UIKit/UIKit.h>
#import "ViewController.h"
@interface SecondViewController : UIViewController
@property(nonatomic, retain) ViewController *parentViewController;
@end
および .m ファイル
//
// SecondViewController.m
// test
//
//
#import "SecondViewController.h"
@interface SecondViewController ()
-(IBAction)buttonPressed:(id)sender;
@end
@implementation SecondViewController
@synthesize parentViewController;
-(IBAction)buttonPressed:(id)sender {
parentViewController.yourObject = @"your value";
}
-(void)dealloc {
[parentViewController release];
[super dealloc];
}
2 番目のビューコントローラーをプッシュするときは、次のようにします。
SecondViewController *vc = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
vc.parentViewController = self;
[self.navigationController pushViewController:vc animated:YES];
[vc release];