当触发内存警告时,应用程序会尝试删除所有不再需要的对象。这可能会从第一个 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];
}
推动第二个视图控制器时,请执行以下操作:
SecondViewController *vc = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
vc.parentViewController = self;
[self.navigationController pushViewController:vc animated:YES];
[vc release];