全局变量

时间:2012-09-27 18:17:39

标签: ios cocoa-touch

我是目标c和xcode的新手,所以请原谅使用正确技术术语时的错误。

我创建了一个新项目,并有一个appdelegate(.h和.m文件)。 在app委托中我有一些变量(设置)。其中一个变量是mainImage。 我把它放在appdelegate中,因为我希望它可以从任何视图控制器访问。

我添加了一个名为MainViewController的视图控制器(.h和.m文件)。 在我的MainViewController(.m)中,我有一些自定义方法。 在viewDidLoad方法中,我有以下代码

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[currentImage setImage:appDelegate.mainImage];

问题:

在MainViewController的任何方法中,每当我想读取“mainImage”时,我都必须执行以上2行。

.m文件中是否有一个位置可以执行一次,并且该文件的所有方法都可以使用它?

提前多多感谢, 普拉萨德。

3 个答案:

答案 0 :(得分:0)

您可以在MainViewController中编写一个方法,其中包含两行,返回类型为UIImage的对象或其他类型的对象,然后调用它。调用类似[self mainImage],方法签名为- (UIImage *)mainImage

答案 1 :(得分:0)

您可以将这两行放在MainViewController的viewDidLoad方法中作为示例:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[currentImage setImage:appDelegate.mainImage];

这已经完成了一次,然后每当你需要currentImage内容时,你只需要调用它:

UIImage *img= [[UIImage alloc]init];
img = self.currentImage;

假设currentImage在MainViewController中声明为属性。

答案 2 :(得分:0)

@Malloc和@jack ......这非常接近我所需要的......然而,我有很多属性..因此我结束了在头文件中包含调用......

#define appDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate)

然后我打电话给appDelegate.any_of_my_properties

从我的C#经验来看,我知道在app delegate中包含一个全局变量并以这种方式引用它可能是一个不好的做法..然而,这一次......我认为这是有道理的...给对象是实际上并没有绑定任何特定的视图控制器(图像只是一个例子)..我有一些动态价值持有者。