在AppDelegate.h中
@property(strong,nonatomic)NSString *str2;
Run Code Online (Sandbox Code Playgroud)
在ViewController.m中
AppDelegate *c3=[[AppDelegate alloc]init];
c3.str2= @"Hello";
NSLog(@"Output:-%@",c3.str2);
Run Code Online (Sandbox Code Playgroud)
输出:你好
Tableview中的导航代码didselect方法(视图控制器): -
Class2 *c2=[self.storyboard instantiateViewControllerWithIdentifier:@"cl2"];
[self.navigationController pushViewController:c2 animated:YES];
Run Code Online (Sandbox Code Playgroud)
在Class2.m中: -
AppDelegate *c3=[[AppDelegate alloc]init];
NSLog(@"%@",c3.str2);
Run Code Online (Sandbox Code Playgroud)
输出:-null
首先,让我们修复您当前的方法:一些人建议使用app delegate来存储共享值的原因是有一个易于访问的实例.您永远不会创建新的应用委托,而是访问共享代理:
AppDelegate *c3 = (AppDelegate*)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)
一旦替换[[AppDelegate alloc]init]上面的代码,您的代码将按照您期望的方式开始工作.
但是,这种解决方案并不理想.App委托不应该是存储共享值的地方; 它们应存储在模型对象中(在MVC中为"M",模型 - 视图 - 控制器).创建单例模型对象,在其中放置共享变量,并通过从不同视图控制器访问单例来使用该共享变量.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |