在整个应用程序中使用 1 个变量,我在哪里初始化它?

Posted

技术标签:

【中文标题】在整个应用程序中使用 1 个变量,我在哪里初始化它?【英文标题】:Use 1 variable throughout the entire app and where do i initialize it? 【发布时间】:2011-09-08 03:17:10 【问题描述】:

我有一个应用程序,第一页上有一个按钮,用户可以设置第二页上的图像。 要切换页面,我使用的代码是:

- (IBAction)myCart:(id)sender; 
MyCartViewController * cart2 = [[MyCartViewController alloc]init];
cart2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:cart2 animated:YES];
[cart2 release];


我还有另一种方法,它允许用户按下按钮并设置图像。

- (IBAction)outlet1 
cart.displayImage = YES; 


cart 是在 .h 文件中创建的 ivar,因此我可以在整个文件中使用它。我的问题是我需要能够在 myCart 方法中使用购物车(而不是购物车 2)。我怎样才能做到这一点?因为如果我尝试只用购物车切换购物车 2 并且我删除了该行: MyCartViewController * cart2 = [[MyCartViewController alloc]init];

当我尝试切换页面时应用程序崩溃。如何对两种方法使用相同的变量?谢谢大家!

【问题讨论】:

【参考方案1】:
- (IBAction)myCart:(id)sender 
     MyCartViewController * cart2 = [[MyCartViewController alloc]init];
     cart2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
     [self presentModalViewController:cart2 animated:YES];
      [cart2 release];

cart2 是局部引用变量,不能在方法myCart 之外持续存在。而是将其声明为接口变量的一部分并在init 方法中对其进行初始化。不要忘记在你释放所有接口成员变量的最后释放它(在dealloc中)。

【讨论】:

好的。您如何建议我在 init 方法中初始化变量?我对编程很陌生。这仍然有效吗?因为当我删除方法中的第一行并尝试将其放入接口文件时,应用程序在尝试切换页面时崩溃。非常感谢您的帮助! 你刚刚帮我找出了一个我已经有大约一周的错误,我只想说非常感谢!!!!!!!!!!!!! :D 没问题。希望你明白你的错误:) 我确实做到了!我完全只是学到了一些新东西。我现在意识到我必须在 init 方法中初始化 ivars 而不是在方法中才能在整个应用程序中使用它们!非常感谢!

以上是关于在整个应用程序中使用 1 个变量,我在哪里初始化它?的主要内容,如果未能解决你的问题,请参考以下文章

成员变量得到一个随机值,即使我在构造函数中初始化它 - 为什么?

图解JVM内存区域划分

如何在 AppDelegate 中初始化 Core Data 的持久化容器并在整个应用程序中使用它?

如何在JavaFX中重新加载应用程序?

我在哪里可以放我的 MFC 控件初始化代码

初学JAVA的变量作用域